常见密码MD5、DES/AES、RSA/Base64的加密解密逆向

常见密码MD5、DES/AES、RSA/Base64的加密解密逆向MD5 是一种被广泛使用的线性散列算法 可以产生出一个 128 位 16 字节 的散列值 hashvalue 用于确保信息传输完整的一致性

大家好,欢迎来到IT知识分享网。

  • 对称秘钥加密:
    • 关键字:AES,DES,xxxkey,encrypt,decrypt
    • 核心点:加密和解密环节必须使用同一个秘钥,秘钥获取极为关键!
  • 非对称秘钥加密:
    • 关键字:RSA,setpublickey,setprivatekey,encrypt,decrypt
    • 核心点:加密使用公钥,解密使用私钥。因此公钥和私钥的获取极为重要!
  • 线性散列散发:
    • md5
    • 核心点:加密后不可逆!

    MD5

    MD5是一种被广泛使用的线性散列算法,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整的一致性。且MD5加密之后产生的是一个固定长度(32位或16位)的数据。

  • 结论:一旦看到了一个长度为32位的密文数据,该数据极有可能是通过md5算法进行的加密!
<html> <script src="https://cdn.bootcss.com/blueimp-md5/2.10.0/js/md5.js"></script> <script type="text/javascript"> var hashCode = md5("i am dede!"); alert(hashCode) </script> </html> 

核心关键字 MD5

AES

  • 暴力激活成功教程。
  • DES如果使用 56 位的密钥,则可能的密钥数量是 2 的 56 次方个。只要计算足够强大是可以被激活成功教程的
    DES算法的入口参数有三个:
  • Key、Data、Mode,padding。
    • Key为7个字节共56位,是DES算法的工作密钥;
    • Data为8个字节64位,是要被加密或被解密的数据;
    • Mode为DES的工作方式。
    • padding为填充模式,如果加密后密文长度如果达不到指定整数倍(8个字节、16个字节),填充对应字符
      • padding的赋值固定为CryptoJS.pad.Pkcs7即可
        上述代码的关键字:
  • AES,DES
  • encrypt(用于加密的函数名),decrypt(用于解密的函数名)
  • xxxkey:秘钥一般是单独生成的,一定不会傻到明文的写在代码中!
<html> <script src="https://cdn.bootcss.com/crypto-js/3.1.9-1/crypto-js.js"></script> <script type="text/javascript"> var aseKey = "wairiteday" //定制秘钥,长度必须为:8/16/32...位 var message = "i am xxxx,who are you ?"; //加密 DES/AES切换只需要修改 CryptoJS.AES <=> CryptoJS.DES var encrypt = CryptoJS.DES.encrypt(message, CryptoJS.enc.Utf8.parse(aseKey), { 
    mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 }).toString(); alert(encrypt); // 0Gh9NGnwOpgmB525QS0JhVJlsn5Ev9cHbABgypzhGnM //解密 var decrypt = CryptoJS.DES.decrypt(encrypt, CryptoJS.enc.Utf8.parse(aseKey), { 
    mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 }).toString(CryptoJS.enc.Utf8); alert(decrypt); // 我是一个密码 </script> </html> 
  • 上述代码的关键字:
    • AES、DES
    • encrypt(用于加密的函数名),decrypt(用于解密的函数名)
    • xxxkey:秘钥一般是单独生成的,一定不会傻到明文的写在代码中!

RSA加密(可逆)

  • RSA加密:
    • RSA加密算法是一种非对称加密算法。在公开密钥加密和电子商业中RSA被广泛使用。
  • 非对称加密算法:
    • 非对称加密算法需要两个密钥:
      • 公开密钥(publickey:简称公钥)
      • 私有密钥(privatekey:简称私钥)
      • 公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。
  • 注意:
    • 使用时都是使用公匙加密使用私匙解密。公匙可以公开,私匙自己保留。
    • 算法强度复杂、安全性依赖于算法与密钥但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快。
  • 使用流程和场景介绍
    • 通过公匙加密,使用私匙解密。私匙是通过公匙计算生成的。假设ABC三方之间相互要进行加密通信。大家相互之间使用公匙进行信息加密,信息读取时使用各自对应的私匙进行信息解密
    • 用户输入的支付密码会通过RSA加密
  • 公钥私钥生成方式:
    • 公私匙可以在线生成
      • http://web.chacuo.net/netrsakeypair
<html> <script src="https://cdn.bootcss.com/jsencrypt/3.0.0-beta.1/jsencrypt.js"></script> <script type="text/javascript"> //公钥 var PUBLIC_KEY = '-----BEGIN PUBLIC KEY-----MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBALyBJ6kZ/VFJYTV3vOC07jqWIqgyvHulv6us/8wzlSBqQ2+eOTX7s5zKfXY40yZWDoCaIGk+tP/sc0D6dQzjaxECAwEAAQ==-----END PUBLIC KEY-----'; //私钥 var PRIVATE_KEY = '-----BEGIN PRIVATE KEY-----MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEAvIEnqRn9UUlhNXe84LTuOpYiqDK8e6W/q6z/zDOVIGpDb545NfuznMp9djjTJlYOgJogaT60/+xzQPp1DONrEQIDAQABAkEAu7DFsqQEDDnKJpiwYfUE9ySiIWNTNLJWZDN/Bu2dYIV4DO2A5aHZfMe48rga5BkoWq2LALlY3tqsOFTe3M6yoQIhAOSfSAU3H6jIOnlEiZabUrVGqiFLCb5Ut3Jz9NN+5p59AiEA0xQDMrxWBBJ9BYq6RRY4pXwa/MthX/8Hy+3GnvNw/yUCIG/3Ee578KVYakq5pih8KSVeVjO37C2qj60d3Ok3XPqBAiEAqGPvxTsAuBDz0kcBIPqASGzArumljkrLsoHHkakOfU0CIDuhxKQwHlXFDO79ppYAPcVO3bph672qGD84YUaHF+pQ-----END PRIVATE KEY-----'; //使用公钥加密 var encrypt = new JSEncrypt();//实例化加密对象 encrypt.setPublicKey(PUBLIC_KEY);//设置公钥 var encrypted = encrypt.encrypt('hello der!');//对指定数据进行加密 alert(encrypted) //使用私钥解密 var decrypt = new JSEncrypt(); decrypt.setPrivateKey(PRIVATE_KEY);//设置私钥 var uncrypted = decrypt.decrypt(encrypted);//解密 alert(uncrypted); </script> </html> 
  • 上述代码提取关键字:
    • RSA
    • setPublicKey(设置公钥)
    • setPrivateKey(设置私钥)
    • encrypt,decrypt
    • 区分加密算法是对称的还是非对称的。
      • 对称秘钥加密:必须要使用秘钥进行加密和解密
      • 非对称的:必须使用公钥加密,私钥解密

base64伪加密

  • Base64是一种用64个字符来表示任意二进制数据的方法。base64是一种编码方式而不是加密算法。只是看上去像是加密而已。
  • Base64使用A–Z,a–z,0–9,+,/ 这64个字符实现对数据进行加密。
  • 对称秘钥加密:
    • 关键字:AES,DES,xxxkey,encrypt,decrypt
    • 核心点:加密和解密环节必须使用同一个秘钥,秘钥获取极为关键!
  • 非对称秘钥加密:
    • 关键字:RSA,setpublickey,setprivatekey,encrypt,decrypt
    • 核心点:加密使用公钥,解密使用私钥。因此公钥和私钥的获取极为重要!
  • 线性散列散发:
    • md5
    • 核心点:加密后不可逆!
<html> <script type="text/javascript"> // 创建Base64对象 var Base64={ 
   _keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0+/=",encode:function(e){ 
   var t="";var n,r,i,s,o,u,a;var f=0;e=Base64._utf8_encode(e);while(f<e.length){ 
   n=e.charCodeAt(f++);r=e.charCodeAt(f++);i=e.charCodeAt(f++);s=n>>2;o=(n&3)<<4|r>>4;u=(r&15)<<2|i>>6;a=i&63;if(isNaN(r)){ 
   u=a=64}else if(isNaN(i)){ 
   a=64}t=t+this._keyStr.charAt(s)+this._keyStr.charAt(o)+this._keyStr.charAt(u)+this._keyStr.charAt(a)}return t},decode:function(e){ 
   var t="";var n,r,i;var s,o,u,a;var f=0;e=e.replace(/[^A-Za-z0-9+/=]/g,"");while(f<e.length){ 
   s=this._keyStr.indexOf(e.charAt(f++));o=this._keyStr.indexOf(e.charAt(f++));u=this._keyStr.indexOf(e.charAt(f++));a=this._keyStr.indexOf(e.charAt(f++));n=s<<2|o>>4;r=(o&15)<<4|u>>2;i=(u&3)<<6|a;t=t+String.fromCharCode(n);if(u!=64){ 
   t=t+String.fromCharCode(r)}if(a!=64){ 
   t=t+String.fromCharCode(i)}}t=Base64._utf8_decode(t);return t},_utf8_encode:function(e){ 
   e=e.replace(/rn/g,"n");var t="";for(var n=0;n<e.length;n++){ 
   var r=e.charCodeAt(n);if(r<128){ 
   t+=String.fromCharCode(r)}else if(r>127&&r<2048){ 
   t+=String.fromCharCode(r>>6|192);t+=String.fromCharCode(r&63|128)}else{ 
   t+=String.fromCharCode(r>>12|224);t+=String.fromCharCode(r>>6&63|128);t+=String.fromCharCode(r&63|128)}}return t},_utf8_decode:function(e){ 
   var t="";var n=0;var r=c1=c2=0;while(n<e.length){ 
   r=e.charCodeAt(n);if(r<128){ 
   t+=String.fromCharCode(r);n++}else if(r>191&&r<224){ 
   c2=e.charCodeAt(n+1);t+=String.fromCharCode((r&31)<<6|c2&63);n+=2}else{ 
   c2=e.charCodeAt(n+1);c3=e.charCodeAt(n+2);t+=String.fromCharCode((r&15)<<12|(c2&63)<<6|c3&63);n+=3}}return t}} // 定义字符串 var string = 'i am dede!'; // 加密 var encodedString = Base64.encode(string); alert(encodedString); // 解密 var decodedString = Base64.decode(encodedString); alert(decodedString); </script> </html> 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/128561.html

(0)
上一篇 2025-08-30 19:20
下一篇 2025-08-30 19:26

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信