PHP加密解密、特性与接口及异常处理的最佳实践
1. 不使用mcrypt进行加密和解密
在PHP社区中,很多人不知道被认为安全的mcrypt扩展其实并不安全。从安全角度看,它有两个大问题:一是需要程序员有高级的密码学知识才能成功运用,而具备此知识的程序员较少,这会导致严重的误用,甚至有1/256的数据损坏几率;二是其核心库libmcrypt在2007年就停止开发了,代码过时、充满漏洞且无法打补丁。所以,了解不使用mcrypt进行强加密和解密非常重要。
操作步骤
- 使用openssl扩展 :它维护良好,有现代且强大的加密和解密能力。使用前,要确保openssl PHP扩展已编译并启用,同时在Web服务器上安装最新的OpenSSL包。
- 确定可用的加密方法 :用
openssl_get_cipher_methods()命令查看,会显示如AES、BlowFish等算法,且会有大小写重复的加密方法。 - 选择合适的加密方法 :不同加密方法的发布时间、密钥大小、密钥块大小和开发背景不同,如下表所示:
| 方法 | 发布时间 | 密钥大小(位) | 密钥块大小(字节) | 备注 |
| — | — | — | — | — |
| camellia | 2000 | 128, 192, 256 | 16 | 由三菱和NTT开发 |
| aes | 1998 | 128, 192, 256 | 16 | 由Joan Daemen和Vincent Rijme
超级会员免费看
订阅专栏 解锁全文
1466

被折叠的 条评论
为什么被折叠?



