zoukankan      html  css  js  c++  java
  • js前端数据加密插件

     

      (2014-11-14 15:37:35)
    标签: 

    it

    分类: Web前端开发

    摘要:

        大部分动态网站都支持从客户端到服务器传递数据,如果传递的数据被别人截取就非常危险,尤其是一些用户名密码之类的。这时候就需要我们在传递数据之前对数据进行加密。现在的加密算法已经有很多了,例如:MD5,SHA-1,SHA-256,AES,Rabbit,MARC4,HMAC等等。下面分享几款前端加密的插件。

    1. braintree.js
      它是设计用于与客户端的库。加密库将数据(通常是在一个移动设备或merchant-hosted网站通过表单提交)和加密使用非对称密钥对的公钥提交。在服务器上,使用客户端发送加密数的公钥。
      1 var clientSideEncryptionKey = "YOUR_ENCRYPTION_KEY";
      2 var braintree = Braintree.create(clientSideEncryptionKey);
      3 $(#transaction_form).submit(function() {
      4     encryptedForm().submit();
      5     return false;
      6 });
      
    2. BurningPig-encryption
      使用RSA算法进行加密
      复制代码
       1 var rsa = require("./src/rsa.js");
       2 var key = new rsa.Key();
       3 ​
       4 var message = "All your bases are belong to us.";
       5 console.log("Message:
      "+message+"
      ");
       6 
       7 // Generate a key
       8 key.generate(1024, "10001");
       9 console.log("Key:
      ");
      10 console.log("n:" + key.n.toString(16));
      11 console.log("e:" + key.e.toString(16));
      12 console.log("d:" + key.d.toString(16));
      13 console.log("
      ");
      14 
      15 // Encrypt
      16 var encrypted = key.encrypt(message);
      17 console.log("Encrypted:
      " + rsa.linebrk(encrypted, 64) + "
      " );
      18 
      19 // Decrypt
      20 var decrypted = key.decrypt(encrypted);
      21 console.log("Decrypted:" + rsa.linebrk(decrypted, 64) + "
      ");
      22 
      23 var sig = key.signString(message, "sha256");
      24 console.log("String signature: 
      " + rsa.linebrk(sig, 64));
      25 
      26 var pubkey = new rsa.Key();
      27 pubkey.n = key.n;
      28 pubkey.e = key.e;
      29 
      30 var verified = pubkey.verifyString(message, sig);
      31 
      32 console.log("Verfied: " + verified);
      
      复制代码
    3. MD5
      项目中使用的就是这个插件。
      复制代码
       1 // quick test
       2 var input1 = "ABC";
       3 var input2 = ["A","B","C"];
       4 var input3 = [0x41, 0x42, 0x43];
       5 alert(faultylabs.MD5(input1) == "902FBDD2B1DF0C4F70B4A5D23525E932");
       6 alert(faultylabs.MD5(input2) == "902FBDD2B1DF0C4F70B4A5D23525E932");
       7 alert(faultylabs.MD5(input3) == "902FBDD2B1DF0C4F70B4A5D23525E932");
       8  
       9 // ArrayBuffer
      10 var abuf = new ArrayBuffer(3)
      11 var vu8  = new Uint8Array(abuf)
      12 vu8[0] = 0x41; vu8[1] = 0x42; vu8[2] = 0x43
      13 alert(faultylabs.MD5(abuf) == "902FBDD2B1DF0C4F70B4A5D23525E932")
      14  
      15 // Typed Array Uint32Array
      16 var au32  = new Uint32Array(1)
      17 au32[0] = 0xDDCCBBAA 
      18 alert(faultylabs.MD5(au32) == "CA6FFBF95B47864FD4E73F2601326304")
      
      复制代码
    4. crypto.js
      是一个综合的库,包含很多算法,MD5,SHA-1,SHA-256,AES,Rabbit,MARC4,HMAC,HMAC-MD5,HMAC-SHA1,HMAC-SHA256,PBKDF2
      1 var CryptoJS = require("crypto-js");
      2 console.log(CryptoJS.HmacSHA1("Message", "Key"));
      
    5. sjcl
      1 sjcl.encrypt("password", "data")
      2 sjcl.decrypt("password", "encrypted-data")
      
    6. jcryption
      ​在正常情况下,当提交数据时,如果没有SSL数据将使用纯文本的方式发送。jCryption这个jQuery插件能够加密由Forms提交的POST/GET数据。jCryption使用RSA公钥密码算法加密,该项目还提供一个PHP文件来处理数据的解密。
      1 $(function() {
      2     $("form").jCryption();
      3 });
      
    7. jshashes
      jshashes是一个纯JavaScript实现的扩展散列算法。它的目标是提供一个独立的、快速和简单的散列算法解决方案对客户端和服务器端都是JavaScript环境的。包括算法:MD5,SHA-1,SHA-256,SHA-512,HMAC,RIPEMD-160
      复制代码
       1 // new MD5 instance
       2 var MD5 = new Hashes.MD5;
       3 // new SHA1 instance
       4 var SHA1 = new Hashes.SHA1;
       5 // new SHA256 instance
       6 var SHA256 =  new Hashes.SHA256;
       7 // new SHA512 instace
       8 var SHA512 = new Hashes.SHA512;
       9 // new RIPEMD-160 instace
      10 var RMD160 = new Hashes.RMD160;
      11 // sample string
      12 var str = 'Sample text!';
      13 // output to console
      14 console.log('MD5: ' + MD5.hex(str));
      15 console.log('SHA1: ' + SHA1.hex(str));
      16 console.log('SHA256: ' + SHA256.hex(str));
      17 console.log('SHA512: ' + SHA512.hex(str));
      18 console.log('RIPEMD-160: ' + RMD160.hex(str));
      
      复制代码

    小结:

      网上也有很多关于数据加密的,大部分思路是使用非对称加密方法,如果你有好的方法可以多多交流。

      另外附上两个在node.js环境上加密解密的插件:

      https://github.com/gwjjeff/cryptojs

      https

  • 相关阅读:
    Linux上安装Tomcat
    SQLServer2008 关于while循环
    [转]接口和抽象类
    windows 装XP系统
    SQLServer2008 表与表之间的数据导入
    问题消灭机
    报错。。。。。。。。。。
    疑问...........
    SQLServer In和Exists
    struts2 访问一个action的时候出现多次重复访问问题(2次或者3次)
  • 原文地址:https://www.cnblogs.com/xzzzys/p/7581832.html
Copyright © 2011-2022 走看看