jemdev / chiffrement
数据加密
dev-master
2021-08-11 14:16 UTC
Requires
- php: >=7.2.0
This package is auto-updated.
Last update: 2024-09-11 21:41:52 UTC
README
- 作者: Jean Molliné
- 许可证: CeCILL V2
- 先决条件
- PHP >= 7.2.0
- 联系: 信息
- GitHub: github.com/jemdev/chiffrement
- Packagist: packagist.org/packages/jemdev/chiffrement
注意,jemdev\chiffrement\crypt 类已过时
此库中的 jemdev\chiffrement\crypt 类已过时:从 PHP 7.1 开始,mcrypt 扩展已过时,并将在 7.2 版本中删除,这意味着该类将变得不可用。现在可以使用同一库中的 jemdev\chiffrement\cryptopenssl 类使用 OpenSSL 扩展进行替换
新类,但相同的方法
两个类中可用的方法相同。对 chiffrement\crypt 类的一些修改导致创建了一个接口:因此,两个类的构造函数都返回一个接口而不是类本身。
原始类是在 Ripat 在 Lumadis.be 上发布的关于使用 mcrypt 加密库的很好的教学文章之后完成的:新类 cryptopenssl 的开发是为了使得从一个类到另一个类的转换只需要更改构造函数的调用。然而,注意过渡:cryptopenssl 类中没有“模式”,这与依赖于 mcrypt 的另一个类不同。
使用方法
创建实例时,除“模式”参数外没有特别变化,该参数已消失
$brouilleur = new cryptopenssl($grainDeSel, $iv = null, $algo = "aes-256-cbc", $locale = 'fr');
- 第一个参数是加密密钥,必选;
- 第二个是初始化向量:可选,如果省略,将在过程中自动生成一个随机向量;可以通过 getGrainDeSel() 方法检索该向量以用于解密。
- 要使用的算法:可选,如果省略,将默认使用 aes-256-cbc;可以通过 setAlgo() 方法更改此算法。然后,将自动检查该算法是否存在。如果选择的算法不存在,将引发异常。
- 使用的语言:默认情况下,将是法语,它指示在出现错误消息时应返回哪种语言。目前有法语(默认)和英语两种语言。
使用非常简单。从 jemdev\chiffrement\cryptopenssl 实例开始,主要使用两种方法
- encrypt(string: $chaine; bool: $encode) : 对发送的文本进行加密。方法返回加密后的文本。可选地,可以在第二个参数中指定一个布尔值:如果指定为 true,则加密的字符串将额外进行 base64 编码。
- decrypt(string: $chaineChiffree; bool: $decode) : 解密传入的字符串参数。与加密方法类似,第二个可选参数可以指示是否需要预先解码要解密的字符串,如果它在加密时已编码为base64。
类的构造函数必须提供第一个参数,即一个盐值,它将在加密阶段使用。然后可以指定
- 一个初始化向量,默认为rand:将生成一个随机字符串;
- 加密算法:默认使用aes-256_cbc;
- 用于错误消息的语言,如果有错误会显示。也提供英语(en)。可选,默认为fr
- 用于解密的初始化向量,默认为空:在这种情况下,将生成一个随机向量。
因为这个类用得不多,所以不会进行更详细的描述。但这个类有大量的注释,可以直接在代码中查看这些注释以获取更多关于方法细节的说明。
测试
随着jemdev\chiffrement\cryptopenssl类的开发,引入了单元测试。
对英语用户的说明
我的英语水平不足以写好英文文档。但如果你是英语母语者并且很好地理解法语,请随时撰写翻译。享受这个库吧。