crypto 密码加密

'use strict';
var crypto = require('crypto');
/**
 * generates random string of characters i.e salt
 * @function
 * @param {number} length - Length of the random string.
 */
var genRandomString = function(length){
    return crypto.randomBytes(Math.ceil(length/2))
            .toString('hex') /** convert to hexadecimal format */
            .slice(0,length);   /** return required number of characters */
};
/**
 * hash password with sha512.
 * @function
 * @param {string} password - List of required fields.
 * @param {string} salt - Data to be validated.
 */
var sha512 = function(password, salt){
    var hash = crypto.createHmac('sha512', salt); /** Hashing algorithm sha512 */
    hash.update(password);
    var value = hash.digest('hex');
    return {
        salt:salt,
        passwordHash:value
    };
};
function saltHashPassword(userpassword) {
    var salt = genRandomString(16); /** Gives us salt of length 16 */
    var passwordData = sha512(userpassword, salt);
    console.log('UserPassword = '+userpassword);
    console.log('Passwordhash = '+passwordData.passwordHash);
    console.log('nSalt = '+passwordData.salt);
}
saltHashPassword('MYPASSWORD');
saltHashPassword('MYPASSWORD');

一、使用CBC模式

<script src="./js/crypto-js.js"></script>
<script src="./js/aes.js"></script>
<script>
    var key = '3132333435363738393041424344454631323334353637383930414243444566';
     console.log('密钥:', key);
     key = CryptoJS.enc.Hex.parse(key)
     iv = CryptoJS.enc.Hex.parse("30313233343536373839414243444546")
     var src = "werty7890";
     console.log('原字符串:', src);
     var enc = CryptoJS.AES.encrypt(src ,key,{
         iv:iv,
         mode: CryptoJS.mode.CBC,  
         padding: CryptoJS.pad.Pkcs7
     })

     //console.log('加密:',enc.toString());
     var enced = enc.ciphertext.toString()
     console.log("加密:", enced);

     var dec = CryptoJS.AES.decrypt(CryptoJS.format.Hex.parse(enced), key,{
         iv:iv,
         mode: CryptoJS.mode.CBC,  
         padding: CryptoJS.pad.Pkcs7
     })
     console.log('解密:',CryptoJS.enc.Utf8.stringify(dec));
</script>

在这里插入图片描述
二、使用ECB模式

<script src="./js/crypto-js.js"></script>
<script src="./js/aes.js"></script>
<script>
   var key = '3132333435363738393041424344454631323334353637383930414243444566';
   console.log('密钥:', key);
   key = CryptoJS.enc.Hex.parse(key)
   //iv = CryptoJS.enc.Hex.parse("30313233343536373839414243444546")
   //console.log('偏移量:',CryptoJS.enc.Hex.stringify(iv));
   var src = "werty7890";
   console.log('原字符串:', src);
   var enc = CryptoJS.AES.encrypt(src ,key,{
       //iv:iv,
       mode: CryptoJS.mode.ECB,  
       padding: CryptoJS.pad.Pkcs7
   })

   //console.log('加密:',enc.toString());
   var enced = enc.ciphertext.toString()
   console.log("加密:", enced);

   var dec = CryptoJS.AES.decrypt(CryptoJS.format.Hex.parse(enced), key,{
       //iv:iv,
       mode: CryptoJS.mode.ECB,  
       padding: CryptoJS.pad.Pkcs7
   })
   console.log('解密:',CryptoJS.enc.Utf8.stringify(dec));
</script>

在这里插入图片描述
参考:https://blog.csdn.net/lsvtogergo/article/details/80804312?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1.nonecase%20%E2%80%94%E2%80%94%E2%80%94%E2%80%94%E2%80%94%E2%80%94%E2%80%94%E2%80%94%E2%80%94%E2%80%94%E2%80%94%E2%80%94%E2%80%94%E2%80%94%E2%80%94%E2%80%94%20%E7%89%88%E6%9D%83%E5%A3%B0%E6%98%8E%EF%BC%9A%E6%9C%AC%E6%96%87%E4%B8%BACSDN%E5%8D%9A%E4%B8%BB%E3%80%8CftToday%E3%80%8D%E7%9A%84%E5%8E%9F%E5%88%9B%E6%96%87%E7%AB%A0%EF%BC%8C%E9%81%B5%E5%BE%AACC%204.0%20BY-SA%E7%89%88%E6%9D%83%E5%8D%8F%E8%AE%AE%EF%BC%8C%E8%BD%AC%E8%BD%BD%E8%AF%B7%E9%99%84%E4%B8%8A%E5%8E%9F%E6%96%87%E5%87%BA%E5%A4%84%E9%93%BE%E6%8E%A5%E5%8F%8A%E6%9C%AC%E5%A3%B0%E6%98%8E%E3%80%82%20%E5%8E%9F%E6%96%87%E9%93%BE%E6%8E%A5%EF%BC%9Ahttps://blog.csdn.net/longlc123/article/details/106092551

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

web修理工

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值