nodejsバージョンRSAアルゴリズムパッケージ(SHA 1)
2960 ワード
物語の背景
コードを書いたことがない人がアルゴリズムの詳細を話してXを装うことを見て、本当に面白いと思います.また、人を突き破るパフォーマンスが恥ずかしかったです.古代に置いたら趙包括かもしれません.廉に代わって秦を攻撃することができます.
ハハ、多すぎると言っていますか?それとも伝説のPUKプロジェクトですか?独特の暗号化データ方法
非対称暗号化を普及させてください.
コアコード
なお、対応する公開鍵と秘密鍵を生成する必要があり、opensslを使用することもでき、ペイロードのオープンツールを使用することもできる.
コードを書いたことがない人がアルゴリズムの詳細を話してXを装うことを見て、本当に面白いと思います.また、人を突き破るパフォーマンスが恥ずかしかったです.古代に置いたら趙包括かもしれません.廉に代わって秦を攻撃することができます.
ハハ、多すぎると言っていますか?それとも伝説のPUKプロジェクトですか?独特の暗号化データ方法
DESede/CBC/PKCS5Padding
だけではなく、RSA
(非対称暗号化)を追加しました.二重暗号化保障、安全係数5つの星!非対称暗号化を普及させてください.
【 】 , 【 】 。
Talk is chap,show you the code!コアコード
const crypto = require("crypto");
/**
* ( )
*
* @param data
* @param privateKey
* @returns {string}
*/
function createSign(data, privateKey) {
const sign = crypto.createSign('RSA-SHA1');
sign.update(data);
sign.end();
return sign.sign(privateKey).toString('base64')
}
/**
* ( 、 、 )
*
* @param data
* @param sign
* @param publicKey
* @returns {boolean}
*/
function verifySign(data, sign, publicKey) {
const verify = crypto.createVerify('RSA-SHA1');
verify.update(data);
verify.end();
return verify.verify(publicKey, Buffer.from(sign, 'base64'));
}
実行結果なお、対応する公開鍵と秘密鍵を生成する必要があり、opensslを使用することもでき、ペイロードのオープンツールを使用することもできる.
//
const privateKey = `-----BEGIN PRIVATE KEY-----
MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAIzOypoBDOR0dLfR8gEdcHMuX97+Qms/KQ7tbsKzC/rbvJ0p3r9Dy5hTzSBR+BpFYDMJD9nnbDFZF7vg5hletPJoD7rN52DqBL3oMPLYN3u2qVRFIMnk0Oy2lBgAZ52VRcZNu5oYQlCvD+vztf7UCpcL2gP6A9zts4bj553N4gUVAgMBAAECgYAgvuKdCAuAgZi3OwrluXvyPWGsUUMO/+RDhXIRs2Pg1gM6JYeYwWJyrWJx1r41Fdc2ZzAZg9lEbKy5U6cPVVgNAwE8m4AHVNVlZJVvx0lGnvnh3XFlCrlKv/FseDQhi52vysVjIy1BDDWEUSnMcjfkwncjEBdzTLFqjbLiLinNwQJBAM9oTJM8j1K0N2qQfRsyRhUxJI+C4MDntK8CGqx0Qvf90dgXNM8FEVxsjDdN/nIMNeRYgXhrBSe+qlequSHtNeUCQQCtzAmNt3yANOymMaU19NWMf6WVeu5/GGBWgyarzffv/A9k16TrcHlMLcEC97ixmtNEB1ItkiJmJv7tzZmFpJ9xAkEAkwPFM6B7nw3rMfgVFc/+6UqaNbd5hIM5CcweCBuo1Ivv0JIydoOLGM5AXXtFXqXVFXS+4RJK5y85I0b6T1gLGQJARla51x1XyhuhW3HkR34bn41Z2rGyLMYU126lDAuEOSBuqoWMPa17qhUqdKUFnvvmXTYJUGBAg89shZocdDY4QQJBAME5svM/2FIuNDU2uqf4/yv32PHH11F9zez16nJFleagTYU6Lt1Hwcw39JyyxHUqOyKdXr/EncGv6zJgldPULbM=
-----END PRIVATE KEY-----`;
let json = `{"name":"chenqionghe","cn":" ","content":"no pain no gain, light weight baby"}`;
let sign = createSign(json, privateKey);
console.log(sign);
//
const publicKey = `-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCMzsqaAQzkdHS30fIBHXBzLl/e/kJrPykO7W7Cswv627ydKd6/Q8uYU80gUfgaRWAzCQ/Z52wxWRe74OYZXrTyaA+6zedg6gS96DDy2Dd7tqlURSDJ5NDstpQYAGedlUXGTbuaGEJQrw/r87X+1AqXC9oD+gPc7bOG4+edzeIFFQIDAQAB
-----END PUBLIC KEY-----`;
console.log(verifySign(json, sign, publicKey));
運転出力QPLXzRwQ8OFUn0S4c3+WaKO64uK6boQRTH1EAYS00Rh9br3so+ucX2KaIa3F0QZ5REkH96dEbCMWi/s0xAncCrnxKHjm43r2uybWE8qgBr8zVKOPTqwdIAEjIjPwSe8cRb4IAXJkPv6u7x+Qbw+tYrm0L3zvgitKeCl5PNdcEdo=
true
結果はtrueです.検証は通過しました.アルゴリズムは大丈夫です.以上の内容はchenqiongheがピットを踏んで包装します.転載は住所を説明してください.