风也温柔

计算机科学知识库

java常用加密解密算法 简易可逆加密解密算法

  1.基本原理

  (1)使用和函数作为可逆的加密和解密工作函数

  (2)把出来的字符串通过某种方式进行分拆组成新的字符串实现加密

  c语言字符串加密和解密算法_java常用加密解密算法_java 加密 vb解密

  (3)把字符串通过逆向的分拆组成原来生成的出来的字符串,再用函数实现解密

  2.具体实现

  (1)需求java常用加密解密算法,用户登录后,需要把phone和存储到中,但是为了让中的数据更安全,如隐藏phone这个隐私信息,同时又方便服务器读取解密实现自动登录

  (2)代码如下:

  c语言字符串加密和解密算法_java常用加密解密算法_java 加密 vb解密

   // phone为11位,password为md5加密后的32位字符串

    $user_info = ['phone'=>12345678901, 'password'=>'1qaz2wsx3edc4rfv5tgb6yhn7ujm8ikk'];
    // 转为json字符串,可存入cookie,但有些信息可能会暴露
    // -------------以下为加密方法----------------
    $json = json_encode($user_info);
    // {"phone":12345678901,"password":"1qaz2wsx3edc4rfv5tgb6yhn7ujm8ikk"}
    // 转为base64字符串
    $b64 = base64_encode($json);
    // eyJwaG9uZSI6MTIzNDU2Nzg5MDEsInBhc3N3b3JkIjoiMXFhejJ3c3gzZWRjNHJmdjV0Z2I2eWhuN3VqbThpa2sifQ==
    // 长度为92,可以用"_"等字符补齐
    $fade_b64 = $b64.'________';
    // eyJwaG9uZSI6MTIzNDU2Nzg5MDEsInBhc3N3b3JkIjoiMXFhejJ3c3gzZWRjNHJmdjV0Z2I2eWhuN3VqbThpa2sifQ==________
    // 把得到的字符串按10的长度分割为10份
    $line_arr = [];
    for($i = 0; $i < 10; $i++) {
        $line_arr[] = substr($fade_b64, $i*10, 10);
    }
    // Array ( 
    //      [0] => eyJwaG9uZS |
    //      [1] => I6MTIzNDU2 |
    //      [2] => Nzg5MDEsIn |
    //      [3] => Bhc3N3b3Jk |
    //      [4] => IjoiMXFhej |
    //      [5] => J3c3gzZWRj |
    //      [6] => NHJmdjV0Z2 |
    //      [7] => I2eWhuN3Vq |
    //      [8] => bThpa2sifQ |
    //      [9] => ==________ V 
    //      先组装第一列eINBIJNIb=
    //      以此类推
    //  ) 
    // 对分割好的字符串进行重新组装
    $sign = &#39;&#39;;
    for($i = 0; $i < 10; $i++) {
        for($j = 0; $j < 10; $j++) {
            $sign .= $line_arr[$j][$i];
        }
    }
    // 得到最终的加密串
    // eINBIJNIb=y6zhj3H2T=JMgcocJeh_wT53i3mWp_aIMNMgdha_GzD3Xzju2_9NEbFZVNs_uDs3hW03i_ZUIJeRZVf_S2nkjj2qQ_
    // -------------以下为解密方法----------------
    // 把字符串分为10为单位的10份
    $line_arr = [];
    for($i = 0; $i < 10; $i++) {
        $line_arr[] = substr($sign, $i*10, 10);
    }
    //
    // Array ( 
    //      [0] => eINBIJNIb= |
    //      [1] => y6zhj3H2T= |
    //      [2] => JMgcocJeh_ |
    //      [3] => wT53i3mWp_ |
    //      [4] => aIMNMgdha_ |
    //      [5] => GzD3Xzju2_ |
    //      [6] => 9NEbFZVNs_ |
    //      [7] => uDs3hW03i_ |
    //      [8] => ZUIJeRZVf_ |
    //      [9] => S2nkjj2qQ_ V
    //      先组装第一列eyJwaG9uZS
    //      以此类推
    //  )
    //
    $fade_b64 = &#39;&#39;;
    for($i = 0; $i < 10; $i++) {
        for($j = 0; $j < 10; $j++) {
            $fade_b64 .= $line_arr[$j][$i];
        }
    }
    // 得到伪装过的b64字符串
    // eyJwaG9uZSI6MTIzNDU2Nzg5MDEsInBhc3N3b3JkIjoiMXFhejJ3c3gzZWRjNHJmdjV0Z2I2eWhuN3VqbThpa2sifQ==________
    $b64 = substr($fade_b64, 0, 92);
    // 取出混淆字符串"_"
    // eyJwaG9uZSI6MTIzNDU2Nzg5MDEsInBhc3N3b3JkIjoiMXFhejJ3c3gzZWRjNHJmdjV0Z2I2eWhuN3VqbThpa2sifQ==
    $json = base64_decode($b64);
    // 最终得到加密前的数据

  3.应用场景

  此种加密方法实现简单,可以把信息存储在像这种暴露出来的应用中

  4.这只是想到的一种比较简单的可逆的加密解密方式,数据组装部分用了最简单的 “ 按列从上到下 ” 组装的方式,破解可能会比较容易,也可以用 " 按列从上到下,从下到上 " 混合、“ 对角线 ” 方法等,然后再加以字符的统一替换java常用加密解密算法,如 a 全部替换为 A 等替换法,可以使加密效果更好java常用加密解密算法 简易可逆加密解密算法,更不容易破解。最近用到了这种算法,与大家分享,当抛砖引玉了~用心,多动脑,就算是用php这种超级简单的语言,也可以做出厉害的东西!

  文章来源:https://blog.csdn.net/phpspreader/article/details/53469481