php加密算法之实现可逆加密算法和解密分享

 对于大部分密码加密,我们可以采用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加密解密算法
 
 
从上述结果可以看出,这是一组可逆的加密解密算法,可以用于部分需要还原的数据加密。
 

时间: 2024-09-19 09:09:52

php加密算法之实现可逆加密算法和解密分享的相关文章

php加密算法之实现可逆加密算法和解密分享_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};   

PHP和C#可共用的可逆加密算法详解_php技巧

在一些项目中要求在php中生成加密,然后在asp.net中接受过来的密码再解密,下面和大家分享一个PHP与asp.net C#可共用的可逆加密算法,感兴趣的可以参考参考. php加密算法: <?php class DES { var $key; var $iv; //偏移量 function DES($key = '11001100', $iv=0 ) { //key长度8例如:1234abcd $this->key = $key; if( $iv == 0 ) { $this->iv

PHP中的 Mcrypt 可逆加密算法

PHP中的 Mcrypt 可逆加密算法 <?php教程       $td = mcrypt_module_open(MCRYPT_DES,'','ecb',''); //使用MCRYPT_DES算法,ecb模式        $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);       $ks = mcrypt_enc_get_key_size($td);          $key = "ery secr

Go语言实现AzDG可逆加密算法实例_Golang

本文实例讲述了Go语言实现AzDG可逆加密算法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: package main import (  "fmt"  "crypto/md5"  "encoding/base64"  "time" ) var cipher = "密鑰" var h = md5.New() func cipherEncode(sourceText string) stri

NTLM 密码加密算法,NTLM 密码加密算法

问题描述 NTLM 密码加密算法,NTLM 密码加密算法 1C 如题,请教NTLM加密算法NTLM 密码加密算法NTLM 密码加密算法NTLM 密码加密算法 解决方案 http://netsecurity.51cto.com/art/201211/365032.htm

PHP与asp.net C#可共用的可逆加密算法

php加密算法  代码如下 复制代码 <?php class DES {     var $key;     var $iv; //偏移量         function DES($key = '11001100', $iv=0 ) {     //key长度8例如:1234abcd         $this->key = $key;         if( $iv == 0 ) {             $this->iv = $key; //默认以$key 作为 iv     

MD5加密算法在网站数据库安全方面的应用与查表攻击

编者按:本文作者为北师大的大三学生张俏,女Geek,在CSDN等各大网站的用户数据被泄露之后,她就MD5加密问题写下此文,发表了自己的看法,如果有读者想要跟作者进一步探讨,可以在新浪微博@阿豆拉. MD5为现在应用最广泛的Hash算法之一,在1992年由MIT 的Ronald L. Riverst提出,由MD4演化而来.该算法广泛应用于互联网网站的用户数据加密,能够将用户密码加密为128位的长整数.数据库并不明文存储用户密码,而是在用户登录时将输入密码字符串进行MD5加密,与数据库中所存储的MD

一组PHP可逆加密解密算法实例代码

 这篇文章主要介绍了一组PHP可逆加密解密算法实例代码,有需要的朋友可以参考一下 对于大部分密码加密,我们可以采用md5.sha1等方法.可以有效防止数据泄露,但是这些方法仅适用于无需还原的数据加密.   对于需要还原的信息,则需要采用可逆的加密解密算法.   下面一组PHP函数是实现此加密解密的方法:   加密算法如下: 代码如下: function encrypt($data, $key) {  $key = md5($key);     $x  = 0;     $len = strlen

iOS中MD5加密算法的介绍和使用_IOS

前言 软件开发过程中,对数据进行加密是保证数据安全的重要手段,常见的加密有Base64加密和MD5加密.Base64加密是可逆的,MD5加密目前来说一般是不可逆的. MD5生成的是固定的128bit,即128个0和1的二进制位,而在实际应用开发中,通常是以16进制输出的,所以正好就是32位的16进制,说白了也就是32个16进制的数字. MD5主要特点是 不可逆,相同数据的MD5值肯定一样,不同数据的MD5值不一样(也不是绝对的,但基本是不能一样的). MD5算法还具有以下性质:       1.