PHP加密 - 并解密base64编码

时间:2013-06-19 04:09:58

标签: php base64 encryption

在我们的一个Web应用程序(PHP,MySQL)中,我们将用户的手机号码保存为加密值,并在我们向他们发送短信时对其进行解密。该应用程序运行良好。但

现在GoDaddy删除了选项base64_encode并解码。这样我们就无法向用户发送短信。因此,我们将手机号码恢复到本地运行的正常状态。

我的问题是使用密钥加密和解密字符串的最简单,最安全的方法。

这样的东西
Normal string : 9876543210  -> After encrypt with a key -> AASASOOPFPOEROP45664654456
Encrypted string : AASASOOPFPOEROP45664654456 -> on decrypt -> 9876543210 

我当前的代码

function encodeString($str){
  for($i=0; $i<5;$i++)
  {
    $str=strrev(base64_encode($str)); //apply base64 first and then reverse the string
  }
  return $str;
}


function decodeString($str){
 for($i=0; $i<5;$i++)
 {
    $str=base64_decode(strrev($str)); //apply base64 first and then reverse the string}
 }
 return $str;
}

请帮帮我。提前致谢

2 个答案:

答案 0 :(得分:4)

好吧,如果你使用的是base64编码/解码,你就不会加密数据,只是模糊不清。

我不知道godaddy启用了哪些php扩展,所以我建议使用像phpSecLib这样的东西

http://phpseclib.sourceforge.net/

这是一个独立的实现,您可以将其包含在脚本中,并提供对数据的实际加密。 AES或Rijndael应该适合您的应用程序

基本上,它会使用密钥对字符串进行加密,即使您的数据库被泄露,如果没有使用加密的密钥(您将硬编码到脚本中),也无法解密数据。这与简单编码不同,在这种情况下,如果有人得到数据库,他们可以通过运行第一个字符串通过各种不同的编码方法解码它,直到找到一个有效的方法。然后通过相同的解码方法运行其余的

答案 1 :(得分:3)

这里我给你一个简单的例子,你可以使用我们自己的秘密密钥,如下所示

//使用

加密/解密的密钥

$key='mysecretkey'; // 8-32个字符,不含空格

//要加密的字符串

$string1='your sample key, that is the question'; 

// EnCrypt字符串

$string2=convert($string1,$key); 

// DeCrypt back

$string3=convert($string2,$key);

//测试输出

  echo '<span style="font-family:Courier">'; 
    echo 'Key: '.$key.'<br>'."\n"; 
    echo $string1.'<br>'."\n"; 
    echo $string2.'<br>'."\n"; 
    echo $string3.'<br>'."\n"; 
    echo '</span>'."\n"; 

<强>输出

Key: mysecretkey
your sample key, that is the question
tvfw#ady{i|-rv|/2q|jq9dj3qkw%e~`jyp|k
your sample key, that is the question

请告诉我,我可以为您提供更多帮助。