HTML5 加密和摘要算法(base64,md5, sha1,rsa)

< 一 > BASE64

1,Base64 是网络上最常见的用于传输 8Bit 字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法

2,首先需要一个库 base64.js,已上传到博客园  =>  https://blog-static.cnblogs.com/files/lovling/base64.js   使用方式如下

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Base64加密</title>
    <script src="https://blog-static.cnblogs.com/files/lovling/base64.js"></script>
</head>
<body>
</body>
<script type="text/javascript">

    // 编码
    var str = base64.encode("你好的女肯德基淑女剑看电视女可能大门口VM看到了吧");
    console.log(str)

    // 解码
    str = base64.decode(str);
    console.log(str)

</script>
</html>

 

< 二 > MD5 和 HMAC_MD5

1,MD5消息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致

2,首先需要引入一个库 hmac.md5.js => https://blog-static.cnblogs.com/files/lovling/hmac.md5.js  使用方式如下

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>MD5签名</title>
    <script src="https://blog-static.cnblogs.com/files/lovling/hmac.md5.js"></script>
</head>
<body>
</body>
<script type="text/javascript">
    // 不支持汉字加密, 汉字加密可能会出现异常
    var str = "hanzi";

    // 十六进制输出(常用)
    console.log(md5.hex(str)) // 90c374ce46fd7e089c9c5021b6438264

    // base64编码输出
    console.log(md5.b64(str)) // kMN0zkb9fgicnFAhtkOCZA==

    // 字符串输出
    console.log(md5.str(str)) // ÃtÎFý~P!¶Cd

    // HAMC 方式,第一个参数是秘钥, 第二个参数是数据
    console.log(md5.hamcHex("123", str)) // c67fae40a4ff81afeaf784f2c69dc8ca
    console.log(md5.hamcB64("123", str)) // xn+uQKT/ga/q94Tyxp3Iyg==
    console.log(md5.hamcStr("123", str)) // Æ®@¤ÿ¯ê÷òÆÈÊ
</script>
</html>

 

< 三 > SHA1 和 HMAC_SHA1

1,安全哈希算法主要适用于数字签名标准里面定义的数字签名算法

2,首先需要引入一个库 hmac.sha1.js => https://blog-static.cnblogs.com/files/lovling/hmac.sha1.js   使用方式如下

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>SHA1签名</title>
    <script src="https://blog-static.cnblogs.com/files/lovling/hmac.sha1.js"></script>
</head>
<body>
</body>
<script type="text/javascript">
    // 不支持汉字加密, 汉字加密可能会出现异常
    var str = "eyJzY29wZSI6IndvcmtlciIsImRlYWRsaW5lIjoxNTE3MzAxNjI4fQ==";

    // 十六进制输出(常用)
    console.log(sha1.hex(str)); // 512dbdadb4213b2c458f5ca1d789b666c2de8da9

    // base64编码输出
    console.log(sha1.b64(str)); // US29rbQhOyxFj1yh14m2ZsLejak=

    // 字符串输出
    console.log(sha1.str(str)); // Q-½­´!;,E\¡×¶fÂÞ©

    // HAMC 方式,第一个参数是秘钥, 第二个参数是数据
    console.log(sha1.hamcHex("123", str)); // 31038c3ff4f34acfe618c7ede17091d415404212
    console.log(sha1.hamcB64("123", str)); // MQOMP/TzSs/mGMft4XCR1BVAQhI=
    console.log(sha1.hamcStr("123", str)); // 1?ôóJÏæÇíápÔ@B
</script>
</html>

 

< 四 > RSA 

1,RSA加密算法是一种非对称性算法。在公开密钥加密和调子商业中广泛使用

2,需要需要引入一个库 rsa.js => https://blog-static.cnblogs.com/files/lovling/rsa.js  使用方式如下

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>非对称性加密</title>
    <script src="https://blog-static.cnblogs.com/files/lovling/rsa.js"></script>
</head>
<body>
</body>
<script type="text/javascript">
    var publicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC9WI8zxvqW0Q2yLq1pB5KUbYmEiU4VznAt7/y6FnSoUJaDTGDg3uB6urOmqBvcE4oS1DGURui/FGxDXsROuoKgF21KU/fXMn1tJxXRt/NkYhqFA8ZJFnynh5VGHYTafx9HJ17CCChbI0qx2qdIDBUDaMGPHENqJs5TylJqapVecQIDAQAB";
    var privateKey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAL1YjzPG+pbRDbIurWkHkpRtiYSJThXOcC3v/LoWdKhQloNMYODe4Hq6s6aoG9wTihLUMZRG6L8UbENexE66gqAXbUpT99cyfW0nFdG382RiGoUDxkkWfKeHlUYdhNp/H0cnXsIIKFsjSrHap0gMFQNowY8cQ2omzlPKUmpqlV5xAgMBAAECgYAIEQXIxulWE4Hp3WM13kS4XhJFuzPAahMNYfP6WYqOwSAoZ9CYw+X8VIfiybamIY74TmHuVzcDLPOPyzHByOBXruNK+ynU61BFMOdC7a2oR09PW3Fj8mvChtPYalzN/h2GuSD/eJ4hnZC7b3AEz4DTuaILVIae2SWqzGCJ8JYsoQJBAOLldE9FEeJZrqAsTATx8vL7KqkEwgJ7fTsLptCpThNezD8ecyO3mDUctAxvR+Iislxfy/TixuC4iyYdrBPBCAcCQQDVohJPE5ahFcLSDpSme2U+A5nrMRRMg0dnF/7SnSqYLJka49Q+4kDB8/OFSHtwlNztC3wiEF/PktrKxt6C1JfHAkEAxKQTvzefHkqXOx3o7Eg8RDVFbaI/+iLID8ozUpfIoKUB4pojM4tEEJPFvxkadXOYnNIxUxTPQ6bsgaYpoh0jNQJARqycY/61+UqKrhVWxhDSeIaWeAE/luRjTc7ZZXHLMpamfAfdIoSVKdT7vh8xfxgwUldXVKmYGMKbkTPjTuLn5wJAaLMytE0yg+E+uyf1UgCWMfmMLmHPmGIvw9i9eIx35w8JVG5wHFM8wo1v26CWq9Y5x6n3qP36Yyqsg4ahRuRn4A=="

    // 设置公钥
    rsa.setPublicKey(publicKey);

    // 设置私钥
    rsa.setPrivateKey(privateKey);

    var str = "这是一个字符串";

    // 加密
    str = rsa.encrypt(str);
    console.log(str);

    // 解密
    str = rsa.decrypt(str);
    console.log(str)
</script>
</html>

3,关于公钥和私钥的生成方式,可以在该网站实现 => http://web.chacuo.net/netrsakeypair

 

转载于:https://www.cnblogs.com/lovling/p/10521997.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值