打算通过msrCrypto(MsrRsaCryptoSample.html)加密文字。
我可以使用RSA公钥和私钥对加密数据并解密。但是仍然不清楚这一事实,每当我刷新网页时,加密数据的变化是什么。
跟随功能的目的究竟是什么:
function bytesToHexString(bytes) {
console.log("---------------bytesToHexString------------------");
var result = "";
for (var i = 0; i < bytes.length; i++) {
if (i % 4 === 0 && i !== 0) result += "-";
var hexval = bytes[i].toString(16).toUpperCase();
result += hexval.length === 2 ? hexval : "0" + hexval;
}
console.log("result : " + result);
return result;
}
答案 0 :(得分:3)
如果两条消息相同,则确定性加密会泄漏。对于非对称加密,这一点尤其严重,因为攻击者可以加密无限数量的所选消息。为了避免这种弱点,标准RSA填充是随机的。
您发布的代码与该随机化无关,它只是将二进制数据转换为可打印的十六进制字符串。
答案 1 :(得分:1)
目的相对明确。它在函数名称中。它需要一个字节数组并将其转换为十六进制字符串
答案 2 :(得分:0)
加密方法中使用的填充方案负责每次生成的随机加密字符串。
var cryptoOperation = subtle.encrypt(
{ name: "**RSAES-PKCS1-v1_5**" },
publicKeyHandle,
plainTextBytes);
其中RSAES-PKCS1-v1_5是填充方案 publicKeyHandle是字节形式的公钥 plainTextBytes是要以字节形式加密的消息。