在我们的一个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;
}
请帮帮我。提前致谢
答案 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
请告诉我,我可以为您提供更多帮助。