Javascript实现的SHA-256加密算法完整实例
SHA-256是一种常用的加密算法,可以对文本进行加密处理,被广泛应用于网络安全、密码学等领域。本文将介绍如何使用javascript语言实现SHA-256加密算法,并提供详细的完整代码实例。
一、SHA-256加密算法基础知识
SHA-256是一种基于哈希加密算法的加密方式,它可以将任意长度的输入信息转换为长度为256位(32字节)的哈希值。相较于MD5等算法,SHA-256具有更高的安全性,更难以被破解。
SHA-256算法的实现过程,可以分为四个步骤:
- 填充数据:根据算法规定的填充方式,将原始数据填充到一定长度。
- 初始化:对填充后的数据进行初始化处理,生成初始值。
- 处理消息:对初始化后的消息进行处理,迭代生成中间哈希值。
- 生成哈希值:将中间哈希值合并,生成最终的哈希值。
二、Javascript实现SHA-256加密算法代码
下面是使用javascript实现SHA-256算法的基础代码实例:
function sha256(message) {
const hash = new TextEncoder().encode(message);
const hashBuffer = crypto.subtle.digest('SHA-256', hash);
return hex(hashBuffer);
}
// 将二进制转化为16进制
function hex(buffer) {
const hexCodes = [];
const view = new DataView(buffer);
for (let i = 0; i < view.byteLength; i += 4) {
const value = view.getUint32(i)
const stringValue = value.toString(16)
const padding = '00000000'
const paddedValue = (padding + stringValue).slice(-padding.length)
hexCodes.push(paddedValue);
}
return hexCodes.join("");
}
在上面的代码中,我们使用了 TextEncoder()
API 将原始消息转化为UTF-8编码,并将计算结果进行了16进制编码的转换。
三、完整SHA-256加密算法示例
- 示例1:使用SHA-256算法生成字符串hash
下面是使用SHA-256算法生成一个字符串hash的完整样例:
const message = 'Hello, World!';
console.log(`原始消息: ${message}`);
console.log(`SHA-256哈希值: ${sha256(message)}`);
运行这段代码,我们将会得到以下输出:
原始消息: Hello, World!
SHA-256哈希值: a591a6d40bf420404a011733cfb7b190d62c65bf0bcda32b57b277d9ad9f146e
- 示例2:使用SHA-256算法生成文件hash
下面是使用SHA-256算法生成文件hash的完整样例:
function sha256File(file) {
return new Promise((resolve, reject) => {
const fileReader = new FileReader();
fileReader.onload = () => {
const view = new DataView(fileReader.result);
crypto.subtle.digest('SHA-256', view)
.then(buffer => {
const hashArray = Array.from(new Uint8Array(buffer));
const hashHex = hashArray.map(b => b.toString(16).padStart(2, '0')).join('');
resolve(hashHex);
}).catch(err => reject(err));
}
fileReader.onerror = () => {
fileReader.abort();
reject(new DOMException("无法读取文件"));
};
fileReader.readAsArrayBuffer(file);
});
}
// HTML输入框
const input = document.createElement('input');
input.type = 'file';
input.onchange = async () => {
const file = input.files[0];
console.log(`文件hash:${await sha256File(file)}`);
};
document.body.appendChild(input);
运行这段代码,我们将会得到一个文件选择弹框,选择一个文件后将计算该文件的SHA-256哈希值。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Javascript实现的SHA-256加密算法完整实例 - Python技术站