html前端几种加密方式的整理

最近在做几个项目和银行相关的,用的加密方式是Rsa,但是发现网上找的一些库都是没办法用,不然就是会报错,所以我这边特地整理一个完整的库以及加密的使用方式介绍一下。

  • Rsa的初始化以及使用方式

    首先是引入下面几个js,对应的文件路径自己改,文件下载的地址我会在底部给出链接。
    <load href="/Public/js/pidcrypt.js" />
    <load href="/Public/js/pidcrypt_util.js" />
    <load href="/Public/js/asn1.js" />
    <load href="/Public/js/jsbn.js" />
    <load href="/Public/js/rng.js" />
    <load href="/Public/js/prng4.js" />
    <load href="/Public/js/rsa.js" />

    然后是初始化Rsa:

var pubKey = '{$pubKey}';
var keyParams = certParser(pubKey);
var key = pidCryptUtil.decodeBase64(keyParams.b64);
var rsa = new pidCrypt.RSA();
var asn = pidCrypt.ASN1.decode(pidCryptUtil.toByteArray(key));
var tree = asn.toHexTree();
rsa.setPublicKeyFromASN(tree);

使用方式是:
encryptBase64(value, rsa) ; value既代表你要加密的值,而rsa是前面初始化好的Rsa变量。

  • Md5的加密以及使用方式
  • 先引入以下JS
    <load href="/Public/js/pidcrypt.js" />
    <load href="/Public/js/md5.js" />

    使用方式:
    pidCrypt.MD5(value); value代表是你要加密的字段

  • Sha256的加密以及使用方式


  • 先引入以下JS
    <load href="/Public/js/pidcrypt.js" />
    <load href="/Public/js/sha256.js" />

    使用方式:
    pidCrypt.SHA256(value); value代表是你要加密的字段;

上面就是前端加密的几种方式,Rsa的会比较复杂,Rsa初始化的时候需要给它一个公钥,千万要记得!

文件打包下载链接:js下载

  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
前端加密有以下几种方式: 1. 对称加密:使用相同的密钥进行加密和解密,常见的算法有DES、3DES、AES等。实现方式如下: ```javascript // 加密 function encryptByAES(message, secretKey) { const key = CryptoJS.enc.Utf8.parse(secretKey); const encrypted = CryptoJS.AES.encrypt(message, key, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 }); return encrypted.toString(); } // 解密 function decryptByAES(ciphertext, secretKey) { const key = CryptoJS.enc.Utf8.parse(secretKey); const decrypted = CryptoJS.AES.decrypt(ciphertext, key, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 }); return decrypted.toString(CryptoJS.enc.Utf8); } ``` 2. 非对称加密:使用公钥和私钥进行加密和解密,常见的算法有RSA、DSA等。实现方式如下: ```javascript // 生成公钥和私钥 const keyPair = window.crypto.subtle.generateKey( { name: "RSA-OAEP", modulusLength: 2048, publicExponent: new Uint8Array([1, 0, 1]), // 65537 hash: "SHA-256" }, true, ["encrypt", "decrypt"] ); // 加密 async function encryptByRSA(message, publicKey) { const encodedMessage = new TextEncoder().encode(message); const encrypted = await window.crypto.subtle.encrypt( { name: "RSA-OAEP" }, publicKey, encodedMessage ); return window.btoa(String.fromCharCode(...new Uint8Array(encrypted))); } // 解密 async function decryptByRSA(ciphertext, privateKey) { const decodedCiphertext = Uint8Array.from( atob(ciphertext), c => c.charCodeAt(0) ); const decrypted = await window.crypto.subtle.decrypt( { name: "RSA-OAEP" }, privateKey, decodedCiphertext ); return new TextDecoder().decode(decrypted); } ``` 3. 散列加密:将数据转化为固定长度的散列值,常见的算法有MD5、SHA-1、SHA-256等。实现方式如下: ```javascript // 计算MD5散列值 function hashByMD5(message) { return CryptoJS.MD5(message).toString(); } // 计算SHA-256散列值 function hashBySHA256(message) { return CryptoJS.SHA256(message).toString(); } ``` 4. 混淆加密:通过混淆代码或者加入噪音的方式来增强安全性,常见的方式有代码混淆、字符替换等。实现方式如下: ```javascript // 字符串替换 function replaceChars(str) { return str.replace(/a/g, "@").replace(/e/g, "3").replace(/i/g, "1"); } // 代码混淆 function obfuscateCode(code) { // 实现方式可以使用自己的加密算法,这里只是示例 return code.split("").reverse().join(""); } ``` 需要注意的是,以上示例代码只是参考实现,实际情况需要根据具体需求进行修改和完善。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值