首页 理论教育数据加密实战-Base64、RSA、Crypt

数据加密实战-Base64、RSA、Crypt

【摘要】:Base64通过把3个8位的字符转换为4个6位的字符,最后使用0补够8位,最终实现数据加密。Rsa使用的是数值相乘加密方式,能够实现对超长字符串的加密。Rsa是一种高效的数学加密方式,由于位数高,能够有效防止密码猜测等攻击。Rsa常用于数字证书加密、硬件级的芯片加密等。此外Crypt类库支持Besa64加密。其中参数1表示加密的字符串;参数2表示是否使用Base64位加密,默认为false。

数据加密是网站开发中重要的安全技术,PHP共支持两大类加密方式:一种是不可逆的加密方式,即单向加密,例如常见的MD5、Crypt、Des等;另外一种是支持双向操作的加密方式,例如Base64、Xtea等。接下来将分别介绍系统内置的常用加密处理扩展。

1.Des

Des是一种支持加密及解密的加密技术,在Linux、UNIX等操作系统底层实现中,已经在大量应用。PHP很早就支持Des加密,使用方式也比较简单。ThinkPHP内置了Des扩展类库,使用该类库实现Des加密解密,更加符合MVC编程模式,如以下代码所示。

在实际应用开发中,读者可以使用数据库等技术将加密后的字符串保存,使用时直接解密即可还原数据。

2.Base64

Base64加密方式是网络上最常用的加密方式,典型的应用有URL传值。Base64通过把3个8位(bit)的字符转换为4个6位的字符,最后使用0补够8位,最终实现数据加密。解密时也必须要沿这个步骤反向运算。Base64类库的使用与Des类库相类似,如以下代码所示。

3.Rsa(https://www.chuimin.cn)

Rsa是由Ron Rivest、Adi Shamirh及几位美国麻省理工学院学生发明的加密方式,现在已经成为一种国际化通用标准的加密方式。Rsa使用的是数值相乘加密方式,能够实现对超长字符串的加密。Rsa是一种高效的数学加密方式,由于位数高,能够有效防止密码猜测等攻击。Rsa常用于数字证书加密、硬件级的芯片加密等。PHP对Rsa提供了国际化支持,如以下代码所示。

4.Crypt

在PHP中MD5等加密方式都可称为Crypt,但这里的Crypt并不是指MD5,而是ThinkHPP内置的一种实用的双向加密类库,Crypt类库能够对包括中文在内的常见字符进行加密。Crypt类库的加密方式非常简单,根据字符串的长度进行循环截取。此外Crypt类库支持Besa64加密。如以下代码所示。

encrypt方法与decrypt方法都支持两个参数。其中参数1表示加密的字符串;参数2表示是否使用Base64位加密,默认为false。

5.Hmac

Hmac类库是一个哈希运算加密类库,包含了sha1与md5方法。前者用于实现SHA1加密,后者用于实现MD5加密,这两种加密方式都是单向不可逆的,非常适用于加密用户密码。下面将通过代码演示Hmac类库的使用。