- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
嘿,我真的需要一些指导。
自动提款机。我正在对常规字符串使用这种加密/解密方法。
function encrypt($pure_string) {
$iv_size = mcrypt_get_iv_size(MCRYPT_BLOWFISH, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$encrypted_string = mcrypt_encrypt(MCRYPT_BLOWFISH, "!@#$%#^&*", utf8_encode($pure_string), MCRYPT_MODE_ECB, $iv);
return $encrypted_string;
}
function decrypt($encrypted_string) {
$iv_size = mcrypt_get_iv_size(MCRYPT_BLOWFISH, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$decrypted_string = mcrypt_decrypt(MCRYPT_BLOWFISH, "!@#$%#^&*", $encrypted_string, MCRYPT_MODE_ECB, $iv);
return $decrypted_string;
}
但是经过一些研究,这可能不是最安全的方法?数据存储在 MYSQL DB 中。
而且我无权将自定义 php 插件安装到网络服务器。那么还有其他安全的方法可以做到这一点吗?
我应该如何生成/存储我的加密 key ?
这不用于密码等。
最佳答案
But after some research that might not be the most secure way?
您以某种方式成功地解决了不安全代码的三位一体:
库:使用一个废弃的库(mcrypt),它有很多错误。 OpenSSL 可以使用,但安全使用它仍然是一个挑战。 defuse/php-encryption是一个更好的选择。
分组密码:使用 Blowfish,甚至它的创建者也说它不安全。 AES (=Rijndael-128) 是一个更好的替代方案,但是在使用好的库时您不必担心这一点(请参见 1)。
分组密码操作模式:使用 ECB 模式几乎在所有情况下都是不安全的 ( scroll down to the penguin )。一般来说,需要像 CBC 这样的随机模式,但在使用好的库时,这不是您应该担心的事情(参见 1)。
这适用于数据(以及其他一些)的安全传输。如果您需要根据加密列在数据库中查找内容,那么您需要考虑添加哈希列或真正使用 ECB 模式。
And how should I generate / store my encryption key?
键通常是简单的字节数组。有些密码(例如 DES)的 key 较弱,您需要检查这些 key 并生成另一个 key 。一个好的库通常会为您提供一个用于生成 key 的 API。
存储 key 是一个备受争议的问题。考虑一下对一些数据进行加密的有用性,其中 key 存储在加密数据附近。毕竟,您通常需要频繁访问和解密该数据。对此没有好的解决方案。如果您将加密 key 存储在另一台计算机上而不是数据上,那么出现其他问题并使网络容易受到攻击的可能性就更高。
关于PHP字符串加密/解密,我做错了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39365723/
我是一名优秀的程序员,十分优秀!