首页 > 开发 > PHP > 正文

如何利Mcrypt扩展库进行加密和解密

2024-05-04 22:57:05
字体:
来源:转载
供稿:网友
  • 网站运营seo文章大全
  • 提供全面的站长运营经验及seo技术!
  • 综述:mcrypt 2.4.7是一个功能强大的加密算法扩展库,它包括有22种算法,其中就包括下面的几种算法:

    blowfish rc2 safer-sk64 xtea
    cast-256 rc4 safer-sk128
    des rc4-iv serpent
    enigma rijndael-128 threeway
    gost rijndael-192 tripledes
    loki97 rijndael-256 twofish
    panamasaferplus wake

    如何安装mcrypt?

    在标准的php软件包中不包括mcrypt,因此需要下载它,下载的地址为:ftp://argeas.cs-net.gr/pub/unix/mcrypt/ 。下载后,按照下面的方法进行编译,并把它扩充在php中:

    下载mcrypt软件包。

    gunzipmcrypt-x.x.x.tar.gz
    tar -xvfmcrypt-x.x.x.tar
    ./configure --disable-posix-threads
    make
    make install
    cd to your php directory.
    ./configure -with-mcrypt=[dir] [--other-configuration-directives]
    make
    make install

    根据你的要求和php安装时与服务器作适当的修改。

    如何使用mcrypt扩展库对数据进行加密?

    首先,我们将介绍如何使用mcrypt扩展库对数据进行加密,然后再介绍如何使用它进行解密。下面的代码对这一过程进行了演示,首先是对数据进行加密,然后在浏览器上显示加密后的数据,并将加密后的数据还原为原来的字符串,将它显示在浏览器上。

    使用mcrypt对数据进行加、解密

    <?php
    // designate string to be encrypted
    $string = "applied cryptography, by bruce schneier, is
    a wonderful cryptography reference.";

    // encryption/decryption key
    $key = "four score and twenty years ago";

    // encryption algorithm
    $cipher_alg = mcrypt_rijndael_128;

    // create the initialization vector for added security.
    $iv = mcrypt_create_iv(mcrypt_get_iv_size($cipher_alg,
    mcrypt_mode_ecb), mcrypt_rand);

    // output original string
    print "original string: $string
    ";

    // encrypt $string
    $encrypted_string = mcrypt_encrypt($cipher_alg, $key,
    $string, mcrypt_mode_cbc, $iv);

    // convert to hexadecimal and output to browser
    print "encrypted string: ".bin2hex($encrypted_string)."

    ";
    $decrypted_string = mcrypt_decrypt($cipher_alg, $key,
    $encrypted_string, mcrypt_mode_cbc, $iv);

    print "decrypted string: $decrypted_string";
    ?>


    执行上面的脚本将会产生下面的输出:

    original string: applied cryptography, by bruce schneier, is a wonderful cryptography reference.

    encrypted string: 02a7c58b1ebd22a9523468694b091e60411cc4dea8652bb8072 34fa06bbfb20e71ecf525f29df58e28f3d9bf541f7ebcecf62b c89fde4d8e7ba1e6cc9ea24850478c11742f5cfa1d23fe22fe8 bfbab5e

    decrypted string: applied cryptography, by bruce schneier, is a wonderful cryptography reference.


    上面的代码中两个最典型的函数是mcrypt_encrypt()和 mcrypt_decrypt(),它们的用途是显而易见的。我们使用了"电报密码本"模式,mcrypt提供了几种加密方式,由于每种加密方式都有可以影响密码安全的特定字符,因此对每种模式都需要了解。对那些没有接触过密码系统的读者来说,可能对mcrypt_create_iv()函数更有兴趣,我们会提到它创建的初始化向量(hence, iv),这一向量可以使每条信息彼此独立。 尽管不是所有的模式都需要这一初始化变量,但如果在要求的模式中没有提供这一变量,php就会给出警告信息。


    发表评论 共有条评论
    用户名: 密码:
    验证码: 匿名发表