很多问题已被问及有关这个问题的答案,但没有任何答案帮助我。php加密和解密数字字符串与密钥
我要寻找一个PHP函数,将加密这样的小整数
123456
到加密的字符串,只有A-Z
,a-z
和0-9
所以输出会是什么样子a1b2c3d4
。
和我将能够使用像stringkey
一个键就可以将其转换回123456
任何帮助吗?
很多问题已被问及有关这个问题的答案,但没有任何答案帮助我。php加密和解密数字字符串与密钥
我要寻找一个PHP函数,将加密这样的小整数
123456
到加密的字符串,只有A-Z
,a-z
和0-9
所以输出会是什么样子a1b2c3d4
。
和我将能够使用像stringkey
一个键就可以将其转换回123456
任何帮助吗?
$key = "encryption key";
$text="123456";
$encrypted = bin2hex(openssl_encrypt($text,'AES-128-CBC', $key));
$decrypted=openssl_decrypt(hex2bin($encrypted),'AES-128-CBC',$key);
var_dump($encrypted,$decrypted);
严格来说,虽然,这只会是AF和0-9,你能想出一个更好(更紧凑)的算法支持A-ZA-Z ...没有在我脑海中,现在想。 (建议任何人?)
a-z工作正常。谢谢 – krummens
defuse/php-encryption即将推出的2.0.0版本将默认将其输出编码为十六进制字符。
<?php
use Defuse\Crypto\Crypto;
$key = Crypto::createNewRandomKey();
$encrypted = Crypto::encrypt('123456', $key); // hex encoded
$raw_bytes = Crypto::encrypt('123456', $key, true); // raw binary
注意化解的PHP库提供authenticated encryption,不只是简单的加密。你应该确定你明白the difference between encryption and authentication。
我不需要/希望它很长。最多8个字符。
这听起来像一个错误,并且该错误有一个名称:hashids。
如果您试图伪造一个行ID,则不想对其进行加密。相反,生成一个随机字符串并将其作为另一列存储在同一个表中。将数据列添加到数据库模式很便宜,随机生成它比从整数中确定性地生成更安全。
这就是我们为our audit reports所做的,不泄漏序列号。
基本上可以使用每种加密算法,即PHP/mcrypt提供了适当的编码。输出尺寸是否有限制? –
我不需要/希望它很长。最多8个字符。 – krummens