<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Abraham's Blog</title><link>https://blog.inshomepgup.com/</link><description/><language>en-us</language><lastBuildDate>Thu, 31 Jul 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.inshomepgup.com/post/life/health-system/diet/index.xml" rel="self" type="application/rss+xml"/><item><title>减肥01 一个程序员的身材自救</title><link>https://blog.inshomepgup.com/p/weight-loss/</link><pubDate>Mon, 14 Apr 2025 00:00:00 +0000</pubDate><guid>https://blog.inshomepgup.com/p/weight-loss/</guid><description>&lt;hugo-encrypt>
&lt;div id="hugo-encrypt-encryption-notice">
&lt;p>本文内容已设置密码保护，请输入密码查看&lt;/p>
&lt;noscript>&lt;span id="hugo-encrypt-enable-js">Javascript needs to be enabled to decrypt content&lt;/span>&lt;/noscript>
&lt;div class='hugo-encrypt-form'>
&lt;input
class="hugo-encrypt-input"
id="hugo-encrypt-password"
placeholder='请输入密码'
/>
&lt;input
class="hugo-encrypt-button"
type="button"
value='解锁'
id="button" onclick="hugoDecrypt(document.getElementById('hugo-encrypt-password').value,'input')"
/>
&lt;div id="hugo-encrypt-input-response">&lt;/div>
&lt;/div>
&lt;/div>
&lt;cipher-text data-password='JirsIIhsaHMK13xf' style="display:none;">
## 起点
过去两年看了很多关于营养学的书籍，以及互联网上的视频等等，一直都没有实践。
最近去医院检查，各种指标都超标了，决定不能再狠狠的吃吃吃了。检查花了 1000 多块钱，想起来上学的时候每天疯狂干饭 + 运动，体型变大，涨肌肉，三五年去不了一次医院。
上班这些年，医院没少跑，钱没少花，药没少吃，健康状况没有任何变化，甚至更糟糕。回想起来是我本身没有修改饮食习惯 + 继续维持的 0 运动。
遂决定化被动为主动。
我的体重变化：
- 身高：176cm
- 2025 年 02 月（穿羽绒服）：102KG
- 2025 年 04 月（只剩一条内裤测）：100KG，掉秤约 10 斤
- 写这篇文章时：94KG
> 正常来讲不同的身体状态，体重都是有起伏的，所以也不用太关注具体数值的变化起伏。我比较关注的是完成一些事情以后各方面的状态：精神状态是否有提升，体重是否自然下降，身体机能是否提升。
## 方法
好了进入正题。从我开始执行新的饮食结构到现在只有两个多礼拜的时间，观察的时间还不够，不过体重确实是有变化的，我也还在实践和摸索中。所以这篇文章的主体是**方法论**，没有一个固定的饮食模板或者运动模板。
两年内断断续续学了营养学，看了各种关于减肥的视频、文章。我觉得我身体本身没有什么毛病，之前医院也开过对减肥有帮助的药，吃了两颗没吃了。合适自己的方案还得是自己主动去寻求一些改变。
减肥的原理我们都知道，制造热量差，但是这个不好执行：
- 完全不吃米饭等主食去减肥，会进入低血糖的状态
- 单纯的吃少，每餐只吃之前的 1/2，很快就无法坚持了，而且身体机能都会出问题
**所以任何吃少、不吃的节食减肥都是错误的。**
## 不要参照任何饮食模板
在互联网上充斥着各种饮食模板，什么一根玉米、一个鸡蛋早餐，中饭一拳米饭、一拳肉等等。
我完全不赞成照搬模板。这种模板通常吃不饱，需要长时间的饿肚子，纯靠个人意志很难坚持，虽然肯定能瘦，但是营养物质有限，长时间吃各种小毛病不断。虽然能得到体重减轻的反馈，但这是完全病态的，因为很多营养物质没有给足。
因为每个人的基础代谢都是不一样的，每个人的活动量都是不一样的，在工地工作和在办公室里工作，消耗的热量、消耗的营养物质都完全不同。
## 不要在营养不足的基础上增加运动量
在营养物质不足的情况下还去提升运动量，那简直就是完全透支自己的身体资本，长时间维持身体直接垮掉。一些极端的、吃的少还动的多的，那种太恐怖了，用超强的个人意志去透支身体，表面减少了体重，实际上很难想象这幅皮囊能不能支持。
吃的少（营养不足）+ 高强度运动，这两个结合起来会有什么表现？
- 经常感觉到身体很虚，没力气
- 很容易生病，因为免疫能力下降
- 肌肉下降
**吃动平衡非常重要，增加活动量也必然要增加营养物质的摄入！**
## 自己做自己的营养和运动专家
所以我的理念是自己做自己的营养专家、运动专家，完全自由地选择自己的餐食和运动，建立在营养学的基础上去控制自己吃的内容、吃的分量。
其实我想讨论的不光是减肥，减肥只是最终的呈现效果，要改变的是整体的生活习惯。如果只是减肥，可以看到互联网大部分博主都觉得只要控制饮食就可以瘦了——这是当然的，吃的少了、吃的健康了肯定会瘦。不过我想要的不单单是瘦而已，还要在吃饱、吃好的基础上通过锻炼获得肌肉来支撑自己，最终走向长期稳定的健康生活。
这套方案当中，不会饿，但是一定要勤快：买菜，做菜，选择干净的外卖，保证每天每周一定量的运动。
在我的理念中，饮食要控制，锻炼也要进行，而且不存在「3 分练 7 分吃」等等概念，讲究一个均衡：
- **饮食方面**：做到营养全面，七个营养素都要吃到
- **运动方面**：也要面面俱到，有氧运动、阻抗运动、柔韧性训练等等
其实也就是回归到我上学时期做的一些事情，不过那会儿没什么营养学的概念，只是食堂里确实大部分便宜的东西都是干净能吃的 + 运动量还算足够，所以没有太多身材健康方面的需求。
以下是我的个人经验，基于我学习到的一些营养学知识和最近的实践总结出来的。
## 饮食控制和营养元素分析
控制饮食，我的策略是不主动去计算卡路里，那种称重饮食确实很难有这样的条件。
有一种办法是计算碳水、蛋白质、脂肪等每公斤的具体数值来控制进食内容 + 计算营养比例获取热量和营养成分的摄入。这种办法我觉得一定是可以的，但是我们都是上班族，可能三餐都是外面买，或者只有 1-2 餐可以在家里做，还得准备秤，我觉得太麻烦了。
所以我想的是用**趋势 + 自己身体作为秤**来完成这个事情：通过自己的感受来决定每天要吃什么。时间长了就会知道怎么搭配自己的吃食，找到合适自己的模式，没有固定的模板，把自己变成营养学的大师。
饮食控制的核心策略首先是**只吃健康的、干净的食物**。
### 完全不吃：糖类和炸类
**常见的糖类**（这里指添加糖）：
- 奶茶、含糖饮料
- 甜品、糖水、蛋糕、面包
- 大部分饼干、糖、冰激凌、蛋糕
- 含糖调味品（沙拉酱、千岛酱、蛋黄酱、番茄酱、烧烤酱等）
- 糖醋里脊等糖炒菜
这些带糖的东西显而易见，可以直接屏蔽不吃了。
其实一些快消主食也应该算到糖类：米饭、面包、馒头、面条。单纯从营养学角度出发，这些也是能吃的，但是会影响到正常的营养摄取，因为提供的东西太单一而且数值超标。
单纯看糖，比如可乐，可以提供很多热量，但营养只能提供碳水。血糖升高影响胰岛素分泌，快速升糖的过程中糖类就转换成脂肪贮存了。
**炸类**，比如炸鸡：
- 厚厚的一层淀粉壳（精制碳水）
- 保证口感的皮（脂肪、反式脂肪）
- 调味料（钠）
- 鸡肉（蛋白质、钠）
炸鸡里严格来说只有鸡肉是能吃的，而且根据制作工艺不同，炸鸡的肉也可能钠超标,因为腌料的不同。
**汉堡**单看组成结构好像都是 OK 的，各种营养物质都包含。但是仔细分解：
- 面包胚——脂肪和糖
- 肉饼——大量脂肪
- 酱料——高糖和高盐
- 培根——高脂肪
- 芝士——高热量、高盐、高脂肪、高蛋白、高钙
营养很全面但是也非常容易超标。所以这些东西直接被评为垃圾食品也是没毛病的，就像泡面也是垃圾食品，主要是它们能提供的营养太单一，热量太高、营养太低，或者是为了保证口感而加入了大量脂肪、糖类。营养太充足，身体就会贮存下来成为脂肪。
### 选择性价比高的食物
这两大类只是其中之一，其实核心是我们选择的食物要**性价比高**：高营养但是低热量、高饱腹感。这样的性价比有利于我们减脂，也利于身体的正常营养需求。
尽可能选择低糖、低脂、低盐、高蛋白的食物，因为蛋白质的需求 很高，但常见食物的含量很少。这里没有任何具体的数值，我们需要的是一个饮食日记，通过饮食日记 + 运动日记 + 体重体感去判断，减肥是一个长期的事情，吃动平衡也是一个长期的事情。
- 没有包装的热食，靠经验判断
- 有包装的食品，可以通过阅读营养表去理解（具体怎么看营养表，找个资料应该很方便）不过包装视频直接可以少吃或者不碰，大部分包装视频都是精制的视频。
在实际实践中其实可以完全不买任何包装食品，很省钱，因为三餐正常获取的话是可以不感到饿的，也就不需要包装食品作为便携的营养摄入。
我们要尽可能的吃天然的食物。
### 健康食物：蔬菜和肉类
杜绝了不健康的食品以后，开始选择健康的食物去吃。
**蔬菜**是几乎全区都安全的区域，能想到的任何蔬菜都可以多吃一点，而且效果立竿见影：
- 多吃胡萝卜一段时间，眼睛的状态就会得到提升
- 吃各种绿色蔬菜（菠菜、芦笋、秋葵等），提供不错的膳食纤维，上厕所的体验会愉快很多
各种各样的蔬菜包含了大量的膳食纤维、维生素、矿物质，纤维的饱腹感很强。所以蔬菜一定是健康饮食当中的主力，每餐都可以包含蔬菜去吃，而且放心大胆地吃。
**肉类**是很容易被忽略的一个大类。为了减肥不吃肉类是大错特错的，肉类是蛋白质的主要来源。不吃肉类的一个很大的副作用是皮肤状态会很差，很干燥，一点儿不富有弹性——之前我一个姐们儿完全不吃肉，她的皮肤就很差，而且人很虚弱。
营养需要全面。
推荐：鸡胸肉、瘦牛肉、瘦猪肉、鱼肉、虾肉、各种海鲜。它们的特点是高蛋白、低脂肪，还有维生素和各种矿物质。这里没有说到肥肉，因为肥肉主要是脂肪，是我们减脂期的控制点。
其实按照营养学来说，只要不过量，都可以吃，因为食物都会被身体分解成各种营养元素。比如炸鸡只吃一口，可乐只喝一口，也都不会有什么事儿。
**碳水 + 脂肪 + 蛋白质，是我们减肥的核心**，因为这三者是身体主要的供能营养来源。所以控制这三者摄入的比例和数量，就是体重下降的主战场。
接下去的文章我们首先过一遍七大营养物质，然后再结合当下我自己作为一个 CBD 打工人的一天三餐实践。当下仅针对办公室久坐、三餐可能两餐都需要点外卖的这个情况来进行分析。
&lt;/cipher-text>
&lt;style type="text/css">div#hugo-encrypt-sha1sum {display: none;}&lt;/style>
&lt;script>
const storageKey = location.pathname + "password";
const userStorage = localStorage ;
function str2buf(str) {
return new TextEncoder("utf-8").encode(str);
}
function buf2str(buffer) {
return new TextDecoder("utf-8").decode(buffer);
}
function hex2buf(hexStr) {
return new Uint8Array(hexStr.match(/.{2}/g).map(h => parseInt(h, 16)));
}
function deriveKey(passphrase, salt) {
salt = salt || crypto.getRandomValues(new Uint8Array(8));
return crypto.subtle
.importKey("raw", str2buf(passphrase), "PBKDF2", false, ["deriveKey"])
.then(key =>
crypto.subtle.deriveKey(
{ name: "PBKDF2", salt, iterations: 1000, hash: "SHA-256" },
key,
{ name: "AES-GCM", length: 256 },
false,
["encrypt", "decrypt"],
),
)
.then(key => [key, salt]);
}
function decrypt(passphrase, saltIvCipherHex) {
const [salt, iv, data] = saltIvCipherHex.split("-").map(hex2buf);
return deriveKey(passphrase, salt)
.then(([key]) => crypto.subtle.decrypt({ name: "AES-GCM", iv }, key, data))
.then(v => buf2str(new Uint8Array(v)));
}
async function digestMessage(message) {
const msgUint8 = new TextEncoder().encode(message);
const hashBuffer = await crypto.subtle.digest('SHA-1', msgUint8);
const hashArray = Array.from(new Uint8Array(hashBuffer));
const hashHex = hashArray.map(b => b.toString(16).padStart(2, '0')).join('');
return hashHex;
}
const hugoDecrypt = function(password, type) {
for (const cipher of ciphers) {
decrypt(password, cipher.innerText).then(function(decrypted_text) {
digestMessage(decrypted_text.replace(/\r?\n?[^\r\n]*$/, "")).then(function(sha1_sum) {
if ( decrypted_text.includes(sha1_sum) ) {
document.getElementById("hugo-encrypt-encryption-notice").remove();
cipher.outerHTML = decrypted_text;
userStorage.setItem(storageKey, password);
document.getElementById("hugo-encrypt-sha1sum").innerHTML = "Success: " + sha1_sum;
console.log("Decryption successful. Storing password in Storage.");
}
});
}).catch(function(error) {
if (type === "input") {
document.getElementById("hugo-encrypt-input-response").innerHTML = "密码错误，请重试";
console.log('密码错误，请重试', error);
} else if (type === "storage") {
userStorage.removeItem(location.pathname + "password");
console.log("Password changed. Clearing userStorage.", error);
}
});
}
};
&lt;/script>
&lt;script>
window.onload = () => {
ciphers = Array.from(document.querySelectorAll("cipher-text"));
if (userStorage.getItem(storageKey)) {
console.log("Found storageKey in userStorage. Attemtping decryption");
hugoDecrypt(userStorage.getItem(storageKey), "storage");
}
};
&lt;/script>
&lt;/hugo-encrypt></description><category>个人健康生活体系</category></item><item><title>减肥02 碳水、脂肪、蛋白质 和供能</title><link>https://blog.inshomepgup.com/p/diet-macros/</link><pubDate>Thu, 31 Jul 2025 00:00:00 +0000</pubDate><guid>https://blog.inshomepgup.com/p/diet-macros/</guid><description>&lt;hugo-encrypt>
&lt;div id="hugo-encrypt-encryption-notice">
&lt;p>本文内容已设置密码保护，请输入密码查看&lt;/p>
&lt;noscript>&lt;span id="hugo-encrypt-enable-js">Javascript needs to be enabled to decrypt content&lt;/span>&lt;/noscript>
&lt;div class='hugo-encrypt-form'>
&lt;input
class="hugo-encrypt-input"
id="hugo-encrypt-password"
placeholder='请输入密码'
/>
&lt;input
class="hugo-encrypt-button"
type="button"
value='解锁'
id="button" onclick="hugoDecrypt(document.getElementById('hugo-encrypt-password').value,'input')"
/>
&lt;div id="hugo-encrypt-input-response">&lt;/div>
&lt;/div>
&lt;/div>
&lt;cipher-text data-password='zZ4XmcGJKNPFfbGZ' style="display:none;">
## 七大营养素
人体所需的营养素一共七大类，我们可以先来熟悉一下，这样后续可以更好的去理解我们的饮食方案。这些营养素我们几乎没有都要吃到。
我们只从天然食物去分析，不再关注经过深加工的食物。
1. **碳水化合物**：身体最主要的供能来源，尽量选择低精制、高纤维的种类。天然来源：糙米、燕麦、红薯、玉米、南瓜、全麦制品
2. **蛋白质**：构成和修复肌肉、皮肤、免疫系统的原料。天然来源：鸡胸肉、瘦牛肉、瘦猪肉、鱼虾贝类、鸡蛋、牛奶、豆腐、大豆
3. **脂肪**：供能并维持细胞、激素正常运作，重点选优质不饱和脂肪。天然来源：橄榄油、坚果（核桃、杏仁）、牛油果、深海鱼（三文鱼）、蛋黄
4. **维生素**：维持代谢、免疫、视觉等身体机能正常运转。天然来源：各类蔬菜水果（胡萝卜、菠菜、柑橘类）、坚果、蛋类、动物肝脏
5. **矿物质**：如钙、铁、锌、钾等，维持骨骼、血液、神经等功能。天然来源：奶制品、深绿色蔬菜、红肉、海产品、豆类
6. **水**：参与几乎所有代谢过程，维持体温和体液平衡。天然来源：白水、汤、蔬菜水果中的水分
7. **膳食纤维**：促进肠道蠕动，增加饱腹感，帮助控制血糖。天然来源：全谷物、豆类、绿叶蔬菜、菌菇、带皮水果
> 减肥不是通过节食，节食会引发身体的异常，而是在七大营养素齐全的基础上，控制碳水、脂肪、蛋白质的摄入结构。
如果简单记忆的话，我们的饮食方案就是。
> 尽可能的天然食物，天然的加工方式，非工业深加工的。以肉蛋奶蔬菜水果为核心的，补充低升糖碳水（升糖快的食物就会贮存为脂肪，这是肝脏的工作）
肉蛋奶蔬菜水果 坚果 碳水。
一句话可以总结我们的饮食的主要方向。
对营养物质的认知是非常重要的，这样才能识别一个食品能不能吃。减肥期间我觉得很基本的技能就是对食物进行营养分析：首先要知道一个食物的主要营养物质是什么，再决定吃的量，也就是让我们的眼睛成为营养扫描仪。
什么是碳水，什么是蛋白质，什么是脂肪？这些是我们身体供能的主要来源。
## 高性价比 vs 低性价比食品
减肥减脂期间其实就是尽可能食用高性价比的食品。
- **高性价比**：富含营养但热量较低
- **低性价比**：某些营养太丰富，会被身体贮藏起来变成脂肪，主要是一些不好的碳水，比如糖类、淀粉外壳、软饮料、面包、蛋糕、精米精面之类的
理论上来说，不管是什么食品都能提供营养，但摄入结构才是关键：
- **炸鸡**：淀粉外壳和调味料组成的外衣非常美味，但带来的大量碳水、糖类、钠盐，远超我们身体所需
- **水煮鸡胸肉**：简单的加工和天然食材，提供纯粹的蛋白质，性价比非常高
一块炸鸡提供的营养和热量的比例，和一块水煮鸡胸肉提供的营养和热量的比例，是非常悬殊的。
> 减脂期的核心论点：**戒糖戒炸**是基础，做到远离糖类和炸类，基本上就成功一半了。
我们的核心就是远离低性价比的食品，比如：
- 奶茶：只能提供热量 + 碳水，几乎没有蛋白质和脂肪，而且热量数值特别恐怖
- 炸鸡：同理
有些朋友或者网上会用「糖油混合物」这个词，我不太采用，因为不算是营养学的表达。不过它的营养分析就是碳水化合物 + 脂肪。而且为了风味基本上包含了大量的糖和盐。
## 办公室人群最容易踩的坑：碳水超标
在营养需求层面，我们的饮食习惯里，蛋白质通常是远远不足的，但碳水化合物（以下简称碳水）和脂肪非常容易过量。我研究了一下，主要原因是如果不自己做饭刻意去选择健康食材，选择下馆子或者点外卖，这两项非常容易就超标了——中餐的饮食里，碳水是绝对的重磅地位，这就非常不利于减肥减脂。
随便点个盖浇饭，以饭做基底的所有外卖，都不能吃了。这种就是大碳水，很容易吃太多碳水，超过日常消耗，尤其是办公室人群，应该尽可能降低碳水 + 钠的摄入，也就是主食和咸的东西的摄入。
常见的卤肉饭、盖浇饭都是以米饭作为基底的，肉 + 菜 比 米饭的比例几乎都在 1:4 以上，这就非常不健康了，这属于是给体力劳动者准备的。或者点了卤肉饭，只吃肉 + 菜 + 少量米饭，维持这个平衡，但这样肉和菜的量还是太少了，很容易产生饥饿感，难以持续。肉和菜的分量完全不够我们的营养需求。
在一个健康的餐盘里，蔬菜类应该占到餐盘的一半，然后1/4的优质肉类 + 1/4的主食碳水类。
上面这种卤肉饭和盖浇饭通常会出现在拼好饭里。减脂这个事情确实对经济还是有要求的。牛肉、鱼虾贝类，还是 贵的，不过我们也能选择鸡胸肉、鸡蛋、牛奶，各类型的蔬菜作为主要来源。不过营养学的角度来说，还是推荐尽可能丰富的去吃。
现在的外卖超市已经非常发达了，还是可以点到很多便宜的高营养的食物。
## 那什么是能吃的？
几乎只有两样：
1. **中式炒菜**：可以自己选择米饭的量
2. **轻食**：一种新兴的外卖店，但套餐里的荤素搭配比例还需要仔细甄别——这些轻食店通常直接给出一些标准方案，其实不一定适合每个人的量，会有一定浪费或不足，而且食材品质也难以得到保障
日常还是尽可能选择中式炒菜，比较好的常见连锁餐饮店推荐**老乡鸡**。午餐和晚餐都可以使用老乡鸡，不过这样吃还是太单调了，减脂的终极版一定是在厨房里实现的。
老乡鸡的选择就是一荤一素就够了，尽可能做到每天不重样，或者一荤两素，直接进去吃就行了。
## 我们坚决不吃的部分：
- **含糖饮料**：奶茶、可乐、果汁饮料、乳酸菌饮品、运动饮料
- **油炸食品**：炸鸡、薯条、油条、锅贴、天妇罗
- **精制碳水和甜点**：蛋糕、饼干、白面包、泡面、点心
- **高盐高脂加工肉**：香肠、培根、午餐肉、烧烤类
- **高糖高盐调味料**：番茄酱、沙拉酱、千岛酱、蜜汁烧烤酱
- **酒精**：几乎只提供热量，还会影响脂肪代谢的优先级
外卖时代精制的食物很容易获取，这里总结了我们常见的的几类「放纵餐」，也一并列出来：
- **麻辣烫、麻辣香锅、冒菜**：汤底和调料重油重盐重辣，还习惯搭配宽粉、午餐肉、炸豆皮这些高碳水高脂配菜
- **烧烤、炸串**：肉类本身没问题，但明火炙烤刷的酱料含糖含盐都很高，年糕、土豆、馒头片等淀粉类烤串更是隐形高碳水
- **小龙虾（麻辣、蒜蓉口味）**：调料和油脂远超虾肉本身，一份下去油盐糖全部超标
- **披萨、汉堡薯条套餐**：精制碳水 + 高脂奶酪/加工肉 + 油炸配菜叠在一起，一份的热量经常顶一整天
- **芝士奶盖、波波系列奶茶**：奶盖本身就是奶油加糖，比普通奶茶更容易超标
- **生煎、锅贴、炒饭炒面**：看着是主食，实际吸油量很大，油脂含量不比油炸差多少
这些确实很好吃，不过当身体习惯了健康的天然的食物以后。就会天然的去远离这些看上去好吃但是营养密度极低的食物。
天然的食物也不难吃，而且对我们的身体大有益处。
&lt;/cipher-text>
&lt;style type="text/css">div#hugo-encrypt-sha1sum {display: none;}&lt;/style>
&lt;script>
const storageKey = location.pathname + "password";
const userStorage = localStorage ;
function str2buf(str) {
return new TextEncoder("utf-8").encode(str);
}
function buf2str(buffer) {
return new TextDecoder("utf-8").decode(buffer);
}
function hex2buf(hexStr) {
return new Uint8Array(hexStr.match(/.{2}/g).map(h => parseInt(h, 16)));
}
function deriveKey(passphrase, salt) {
salt = salt || crypto.getRandomValues(new Uint8Array(8));
return crypto.subtle
.importKey("raw", str2buf(passphrase), "PBKDF2", false, ["deriveKey"])
.then(key =>
crypto.subtle.deriveKey(
{ name: "PBKDF2", salt, iterations: 1000, hash: "SHA-256" },
key,
{ name: "AES-GCM", length: 256 },
false,
["encrypt", "decrypt"],
),
)
.then(key => [key, salt]);
}
function decrypt(passphrase, saltIvCipherHex) {
const [salt, iv, data] = saltIvCipherHex.split("-").map(hex2buf);
return deriveKey(passphrase, salt)
.then(([key]) => crypto.subtle.decrypt({ name: "AES-GCM", iv }, key, data))
.then(v => buf2str(new Uint8Array(v)));
}
async function digestMessage(message) {
const msgUint8 = new TextEncoder().encode(message);
const hashBuffer = await crypto.subtle.digest('SHA-1', msgUint8);
const hashArray = Array.from(new Uint8Array(hashBuffer));
const hashHex = hashArray.map(b => b.toString(16).padStart(2, '0')).join('');
return hashHex;
}
const hugoDecrypt = function(password, type) {
for (const cipher of ciphers) {
decrypt(password, cipher.innerText).then(function(decrypted_text) {
digestMessage(decrypted_text.replace(/\r?\n?[^\r\n]*$/, "")).then(function(sha1_sum) {
if ( decrypted_text.includes(sha1_sum) ) {
document.getElementById("hugo-encrypt-encryption-notice").remove();
cipher.outerHTML = decrypted_text;
userStorage.setItem(storageKey, password);
document.getElementById("hugo-encrypt-sha1sum").innerHTML = "Success: " + sha1_sum;
console.log("Decryption successful. Storing password in Storage.");
}
});
}).catch(function(error) {
if (type === "input") {
document.getElementById("hugo-encrypt-input-response").innerHTML = "密码错误，请重试";
console.log('密码错误，请重试', error);
} else if (type === "storage") {
userStorage.removeItem(location.pathname + "password");
console.log("Password changed. Clearing userStorage.", error);
}
});
}
};
&lt;/script>
&lt;script>
window.onload = () => {
ciphers = Array.from(document.querySelectorAll("cipher-text"));
if (userStorage.getItem(storageKey)) {
console.log("Found storageKey in userStorage. Attemtping decryption");
hugoDecrypt(userStorage.getItem(storageKey), "storage");
}
};
&lt;/script>
&lt;/hugo-encrypt></description><category>个人健康生活体系</category></item></channel></rss>