可能重复:
PHP双向加密:我需要存储可以检索的密码
我计划在我的网站上为我的用户存储外国帐户信息,也就是用户名和密码等等...我想保证信息的安全,但我知道如果我散列他们的信息,我无法检索它以供以后使用.
Base64是可解密的,所以没有必要使用它只是简单的关闭.我的想法是加扰用户并在它解密之前和之后通过这种方式传递,如果你尝试解密,你会得到一些看起来很有趣的文本.是否有一个php函数接受将进行字符串的唯一加扰的值,并在以后重新计算该值时对其进行解扰?
有什么建议?
我在基本加密/解密方面遇到了麻烦.我一直在寻找一个有效的例子,但还没有找到一个有效的例子.
- 我将在php中进行加密,使用cryptoj解密以获得一小部分安全性
<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/aes.js">
<?
$text = "this is the text here";
$key = "encryptionkey";
$msgEncrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_CBC, mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND));
$msgBase64 = trim(base64_encode($msgEncrypted));
echo "<h2>PHP</h2>";
echo "<p>Encrypted:</p>";
echo $msgEncrypted;
echo "<p>Base64:</p>";
echo $msgBase64;
?>
<p>AES Decrypt</p>
<script>
var key = 'encryptionkey';
var encrypted = "<?php echo $msgBase64 ?>";
//tried var base64decode = CryptoJS.enc.Base64.parse(encrypted);
var decrypted = CryptoJS.AES.decrypt(encrypted, key);
console.log( decrypted.toString(CryptoJS.enc.Utf8) );
</script>
Run Code Online (Sandbox Code Playgroud)
我错过了哪一步?
我想创建一个应该有一些密钥的加密函数.类似于以下内容:
function encrypt($string) {
$key = "mastermind";
$enc = encryptfunc($string, $key);
return $enc;
}
Run Code Online (Sandbox Code Playgroud)
同样的事情应该适用于解密.
我正在为我工作的公司提出求职申请.我已经有了它来防止SQL注入和一些XSS技术.我的主要问题是保护敏感信息,例如SSN和地址,因为公司需要为销售人员的税收制作1099个表格.
我不知道如何做这个部分,但是我应该加密一切,然后在进入MySQL数据库时解密它?
我正在尝试通过url将加密数据发送到另一个站点(使用file_get_contents("anotherUrl.php?hash=$encryptedString").问题是,有时,加密包含一些特殊字符,如+,这会导致解密失败.
这是我的加密/解密方法:
public function encrypt($string, $key)
{
return base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $string, MCRYPT_MODE_CBC, md5(md5($key))));
}
public function decrypt($encrypted, $key)
{
return rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode($encrypted), MCRYPT_MODE_CBC, md5(md5($key))), "\0");
}
Run Code Online (Sandbox Code Playgroud)
这是一个包含a的加密字符串示例+,我猜这会导致解密失败.
oWCrVPaS+5GbxcQFc0fulUk/zRAkDD60av4zlPiWskE=
任何想法我应该如何解决这个问题?我试图做urlencode()和urldecode()哈希,但这似乎也导致加密打破.有没有办法更改加密算法,使其只返回url安全字符?
我正在制作API而且我是新手.我想到了创建访问令牌的想法.基本上,我们使用密钥加密JSON数据,将其转换为Base64并将其作为访问令牌返回.之后,API解密访问令牌并可以使用id.例如:
login method:我们检查用户名/密码是否正确,如果是,那么我们从数据库中获取用户的id.然后我们构造访问令牌,它将在未来的API调用中使用,如下所示:
{"user_id":609, "logintime":"1430428180"}稍后,当用户进行操作时,我们可以使用此访问令牌来了解用户.例如:
update user info method:我们发送需要更新的数据和访问令牌,这是我们之前获得的.然后我们:
user_id和logintime字段.这种做法有什么好处吗?
我只是想加密和解密一个字符串.但是当我输出解密的字符串时,我只得到:
??
^????V??_??n?.ZZ?????:?2??
Run Code Online (Sandbox Code Playgroud)
我的代码:
function encrypt($string, $secret_key = "ATRTHTRAGSFRSGTS") {
$iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND);
return mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $secret_key, $string, MCRYPT_MODE_CBC, $iv);
}
function decrypt($string, $secret_key = "ATRTHTRAGSFRSGTS") {
$iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND);
return mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $secret_key, $string, MCRYPT_MODE_CBC, $iv);
}
$text = 'This is a test.';
$enc = encrypt($text);
$dec = decrypt($enc);
echo $dec;
Run Code Online (Sandbox Code Playgroud)
任何想法都可能出错?
我想将软件许可证密钥存储在我的mysql数据库的一个字段中,但我希望以乱码格式存储许可证号,这样如果数据库被泄露,许可证密钥将无法使用.
许可证密钥字段有3种可能的方案:
我想在存储之前加扰许可证,然后在登录后向用户显示时,再次运行相同的加扰功能以解密许可证.
我想我需要先检查许可证的格式.
我设置了以下内容:
function scramble($scramblestr) {
// check string length
$length = strlen($scramblestr);
// if 10 digit license (all numbers)
if ($length == 10) {
$1st = substr($scramblestr, 0, 1);
$2nd = substr($scramblestr, 1, 1);
$3rd = substr($scramblestr, 2, 1);
$4th = substr($scramblestr, 3, 1);
$5th = substr($scramblestr, 4, 1);
$6th = substr($scramblestr, 5, 1);
$7th = substr($scramblestr, 6, 1);
$8th = substr($scramblestr, 7, 1);
$9th = substr($scramblestr, 8, 1); …Run Code Online (Sandbox Code Playgroud) 我正在创建一个随机密钥,然后我想使用一个好的算法加密它,然后我想用这个加密的密钥加密数据.我的代码是:
$iv=16; //128bits
$datakey = base64_encode(openssl_random_pseudo_bytes($iv,$strong));
$datakey = md5($datakey);
$finaldata= mcrypt_encrypt(MCRYPT_BLOWFISH, $datakey, $stringtobeencoded, MCRYPT_MODE_CFB);
Run Code Online (Sandbox Code Playgroud)
错误:
加密模式需要大小为8的初始化向量
如何完成我的要求?
我有这个代码:
<?php
$key = 'thisisakey';
$iv = '1234567812345678';
$plaintext = 'Hello World';
$ciphertext = openssl_encrypt($plaintext, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $iv);
echo $ciphertext . '<br>';
$plaintext = openssl_decrypt($ciphertext, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $iv);
echo $plaintext . '<br>';
?>
Run Code Online (Sandbox Code Playgroud)
此代码背后的想法是加密要在URL上使用的数据.所以,我期待输出哪个URL友好.我的意思是,它只包含字母数字字符.但是当我使用这个openssl_encrypt函数时,我得到了奇怪的字符,我不认为URL友好.
它产生这样的输出:
^‘-7Ⱦ®l¿ô¾áÙ
Run Code Online (Sandbox Code Playgroud)
如何生成URL友好字符openssl_encrypt?谢谢
当我将这些东西添加到我的mysql数据库时,我想加密我的php文件中的一些数据.
我就是这样做的.
我创建一个静态键,如:
$key = md5("uJHyFVSG");
Run Code Online (Sandbox Code Playgroud)
然后我有两个函数,名为encrypt()和decrypt(),他们这样做:
function encrypt($string, $key){
$string = rtrim(base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $string, MCRYPT_MODE_ECB)));
return $string;
}
function decrypt($string, $key){
$string = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, base64_decode($string), MCRYPT_MODE_ECB));
return $string;
}
Run Code Online (Sandbox Code Playgroud)
我不确定这是否是最佳做法,但是我如何生成除md5以外的密钥?
我正在寻找最简单和安全的方法来加密/解密PHP7中特定盐的字符串
my string + specific salt = encryped data
decode(encryped data) = my string
Run Code Online (Sandbox Code Playgroud)
我看到了这篇文章,但mcrypt_encrypt似乎已被弃用了.你有其他建议或例子吗?谢谢
php ×13
encryption ×12
mcrypt ×5
security ×4
scramble ×2
access-token ×1
api ×1
base64 ×1
cryptography ×1
cryptojs ×1
javascript ×1
mysql ×1
syntax-error ×1
url-encoding ×1