首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用php7用salt加密/解密字符串

使用php7用salt加密/解密字符串
EN

Stack Overflow用户
提问于 2017-12-28 01:14:47
回答 1查看 3.8K关注 0票数 1

我有一个字符串,我想将这个字符串安全地存储在一个数据库中。

所以,我想到的是用用户密码加密这个字符串。

当用户需要使用该字符串时,我们使用该密钥对其进行解密。

是否有一些算法可以帮助将这些字符串安全地存储在数据库中,从而防止任何人访问它,甚至阻止团队访问它?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-28 01:45:13

您希望使用某些类型的共享秘密加密算法,如AES。openssl和mcrypt都应该支持这一点。我推荐openssl,因为mcrypt是EOL。

下面的示例直接来自php.net。您可能不需要hmac,因为您希望检索原始数据。

代码语言:javascript
复制
<?php
//$key previously generated safely, ie: openssl_random_pseudo_bytes
$plaintext = "message to be encrypted";
$ivlen = openssl_cipher_iv_length($cipher="AES-128-CBC");
$iv = openssl_random_pseudo_bytes($ivlen);
$ciphertext_raw = openssl_encrypt($plaintext, $cipher, $key, $options=OPENSSL_RAW_DATA, $iv);
//$hmac = hash_hmac('sha256', $ciphertext_raw, $key, $as_binary=true);
$ciphertext = base64_encode( $iv./*$hmac.*/$ciphertext_raw );

//decrypt later....
$c = base64_decode($ciphertext);
$ivlen = openssl_cipher_iv_length($cipher="AES-128-CBC");
$iv = substr($c, 0, $ivlen);
//$hmac = substr($c, $ivlen, $sha2len=32);
$ciphertext_raw = substr($c, $ivlen/*+$sha2len*/);
$original_plaintext = openssl_decrypt($ciphertext_raw, $cipher, $key, $options=OPENSSL_RAW_DATA, $iv);
/*
$calcmac = hash_hmac('sha256', $ciphertext_raw, $key, $as_binary=true);
if (hash_equals($hmac, $calcmac))//PHP 5.6+ timing attack safe comparison
{
    echo $original_plaintext."\n";
}
*/
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48000477

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档