对于大部分密码加密,我们可以采用md5、sha1等方法。可以有效防止数据泄露,但是这些方法仅适用于无需还原的数据加密。
对于需要还原的信息,则需要采用可逆的加密解密算法。
下面一组PHP函数是实现此加密解密的方法:
加密算法如下:
function encrypt($data, $key) { $key = md5($key); $x = 0; $len = strlen($data); $l = strlen($key); for ($i = 0; $i < $len; $i++) { if ($x == $l) { $x = 0; } $char .= $key{$x}; $x++; } for ($i = 0; $i < $len; $i++) { $str .= chr(ord($data{$i}) + (ord($char{$i})) % 256); } return base64_encode($str); }
解密算法如下:
function decrypt($data, $key) { $key = md5($key); $x = 0; $data = base64_decode($data); $len = strlen($data); $l = strlen($key); for ($i = 0; $i < $len; $i++) { if ($x == $l) { $x = 0; } $char .= substr($key, $x, 1); $x++; } for ($i = 0; $i < $len; $i++) { if (ord(substr($data, $i, 1)) < ord(substr($char, $i, 1))) { $str .= chr((ord(substr($data, $i, 1)) + 256) - ord(substr($char, $i, 1))); } else { $str .= chr(ord(substr($data, $i, 1)) - ord(substr($char, $i, 1))); } } return $str; }
上述加密解密的过程均需要用到一个加密密钥(即参数$key)。
$data = 'PHP加密解密算法'; // 被加密信息 $key = '123'; // 密钥 $encrypt = encrypt($data, $key); $decrypt = decrypt($encrypt, $key); echo $encrypt, "\n", $decrypt;
上述将输出类似如下结果:
gniCSOzZG+HnS9zcFea7SefNGhXF
PHP加密解密算法
从上述结果可以看出,这是一组可逆的加密解密算法,可以用于部分需要还原的数据加密。
相关推荐
c# 可逆 加密 解密算法
主要介绍了一组PHP可逆加密解密算法实例代码,有需要的朋友可以参考一下
qt5AES加密,ES加密/解密算法是一种可逆的对称加密算法,这类算法在加密和解密时使用相同的密钥,或是使用两个可以简单地相互推
对于大部分密码加密,我们可以采用md5、sha1等方法。可以有效防止数据泄露,但是这些方法仅适用于无需还原的数据加密。对于需要还原的信息,则需要采用可逆的加密解密算法,下面一组PHP函数是实现此加密解密的方法
PHP编写的一个用于文件加密的算法,可以加密任何文件,输出是二进制内容文件。其中加密时可配置盐等。此算法可以用于文件管理系统等方面文件加密。
java实现md5 加密解密(在网络中MD5是著名的不可逆算法,但是如果知道MD5的加密的字符串 则可以通过自己的加密算法对明文进行加密,对加密后的密文与字符串匹配; 匹配成功,表示找到明文;但是此程序的时间耗费较高!仅...
C#加密算法汇总,可逆加密解密,SHA1加密字符串
使用aes加密算法进行加密解密,实际运用时,可使用加密,加密比对,安全性高,效率快。使用异或位运算实现加密解密比aes算法更快,但安全性有待思考。为什么基本上使用md5对用户密码加密?因为md5算法是不可逆的:对...
当然你可以自己写一个可逆加密的算法进行加密和解密计算。本文中我们介绍的是使用 mcrypt模块进行加密解密操作。 Mcrypt的优点不仅仅在于其提供的加密算法较多,在windows下随PHP包一起发布,还在于它可以对数据进行...
用Java实现的一个可逆加密工具类,很不错!我在自己的项目已经使用。
自写的加密 解密算法代码,可用于重要信息的密文传输及保存。代码简单易懂,无外部依赖,可直接复制加/解密函数到所需代码中使用。
加密解密原理一般都是通过一定的加密解密算法,将密钥加入到算法中,最终得到加密解密结果。 u=3837593897,2803417633&fm=26&gp=0.jpg 废话不多说,直接上代码。 一、第一种针对于ID的可逆加密函数,也可以用作于...
在一些项目中要求在php中生成加密,然后在asp.net中接受过来的密码再解密,下面和大家分享一个PHP与asp.net C#可共用的可逆加密算法,感兴趣的可以参考参考。 php加密算法: <?php class DES { var $key; var ...
针对十进制数运算的特点,在加密算法中定义了三种新的运算,并从理论上证明新的运算能保证十进制加密算法的可逆性。将该算法应用于短分组加密仿真系统中的结果表明,算法具有良好的密码学特性,加解密的各项扩散率...
实现了不可逆的MD5加密算法
主要介绍了Python实现的文本简单可逆加密算法,结合完整实例形式分析了Python自定义加密与解密算法具体实现与使用技巧,需要的朋友可以参考下
1、单例类,保证整个场景中只有一个类管理数据加密解密; 2、使用 RijndaelManaged 进行相关加密解密; 3、使用 DataEncryptionAndDecryptionManager.Instance.ConductEncryption 即可加密数据; 4、使用 ...