关于java中RDES的信息

博主:adminadmin 2023-01-21 05:15:07 344

本篇文章给大家谈谈java中RDES,以及对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java的 DES 加密解密方法 求对应php的加密解密方法!!!!急切

DES是一种标准的数据加密算法,关于这个算法的详细介绍可以参考wiki和百度百科:

php中有一个扩展可以支持DES的加密算法,是:extension=php_mcrypt.dll

在配置文件中将这个扩展打开还不能够在windows环境下使用

需要将PHP文件夹下的 libmcrypt.dll 拷贝到系统的 system32 目录下,这是通过phpinfo可以查看到mcrypt表示这个模块可以正常试用了。

下面是PHP中使用DES加密解密的一个例子:

    //$input - stuff to decrypt

    //$key - the secret key to use

    function do_mencrypt($input, $key)

    {

        $input = str_replace(""n", "", $input);

        $input = str_replace(""t", "", $input);

        $input = str_replace(""r", "", $input);

        $key = substr(md5($key), 0, 24);

        $td = mcrypt_module_open('tripledes', '', 'ecb', '');

        $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);

        mcrypt_generic_init($td, $key, $iv);

        $encrypted_data = mcrypt_generic($td, $input);

        mcrypt_generic_deinit($td);

        mcrypt_module_close($td);

        return trim(chop(base64_encode($encrypted_data)));

    }

    //$input - stuff to decrypt

    //$key - the secret key to use

    

    function do_mdecrypt($input, $key)

    {

        $input = str_replace(""n", "", $input);

        $input = str_replace(""t", "", $input);

        $input = str_replace(""r", "", $input);

        $input = trim(chop(base64_decode($input)));

        $td = mcrypt_module_open('tripledes', '', 'ecb', '');

        $key = substr(md5($key), 0, 24);

        $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);

        mcrypt_generic_init($td, $key, $iv);

        $decrypted_data = mdecrypt_generic($td, $input);

        mcrypt_generic_deinit($td);

        mcrypt_module_close($td);

        return trim(chop($decrypted_data));

    }

参考自:

java中DES、MD5加密算法在哪个包中?如何分别调用这两个方法实现对输入数据的加密、解密?

java.security.MessageDigest

/*

 * MD5 算法

*/

public class MD5 {

    

    // 全局数组

    private final static String[] strDigits = { "0", "1", "2", "3", "4", "5",

            "6", "7", "8", "9", "a", "b", "c", "d", "e", "f" };

    public MD5() {

    }

    // 返回形式为数字跟字符串

    private static String byteToArrayString(byte bByte) {

        int iRet = bByte;

        // System.out.println("iRet="+iRet);

        if (iRet  0) {

            iRet += 256;

        }

        int iD1 = iRet / 16;

        int iD2 = iRet % 16;

        return strDigits[iD1] + strDigits[iD2];

    }

    // 返回形式只为数字

    private static String byteToNum(byte bByte) {

        int iRet = bByte;

        System.out.println("iRet1=" + iRet);

        if (iRet  0) {

            iRet += 256;

        }

        return String.valueOf(iRet);

    }

    // 转换字节数组为16进制字串

    private static String byteToString(byte[] bByte) {

        StringBuffer sBuffer = new StringBuffer();

        for (int i = 0; i  bByte.length; i++) {

            sBuffer.append(byteToArrayString(bByte[i]));

        }

        return sBuffer.toString();

    }

    public static String GetMD5Code(String strObj) {

        String resultString = null;

        try {

            resultString = new String(strObj);

            MessageDigest md = MessageDigest.getInstance("MD5");

            // md.digest() 该函数返回值为存放哈希值结果的byte数组

            resultString = byteToString(md.digest(strObj.getBytes()));

        } catch (NoSuchAlgorithmException ex) {

            ex.printStackTrace();

        }

        return resultString;

    }

    public static void main(String[] args) {

        MD5 getMD5 = new MD5();

        System.out.println(getMD5.GetMD5Code("000000"));

    }

}

JAVA和.NET使用DES对称加密的区别

DES加密

DES是一种对称加密(Data Encryption Standard)算法,以前我写过一篇文章:.NET中加密解密相关知识,有过简单描述。

DES算法一般有两个关键点,第一个是加密算法,第二个是数据补位。

加密算法常见的有ECB模式和CBC模式:

ECB模式:电子密本方式,这是JAVA封装的DES算法的默认模式,就是将数据按照8个字节一段进行DES加密或解密得到一段8个字节的密文或者明文,最后一段不足8个字节,则补足8个字节(注意:这里就涉及到数据补位了)进行计算,之后按照顺序将计算所得的数据连在一起即可,各段数据之间互不影响。

CBC模式:密文分组链接方式,这是.NET封装的DES算法的默认模式,它比较麻烦,加密步骤如下:

1、首先将数据按照8个字节一组进行分组得到D1D2......Dn(若数据不是8的整数倍,就涉及到数据补位了)

2、第一组数据D1与向量I异或后的结果进行DES加密得到第一组密文C1(注意:这里有向量I的说法,ECB模式下没有使用向量I)

3、第二组数据D2与第一组的加密结果C1异或以后的结果进行DES加密,得到第二组密文C2

4、之后的数据以此类推,得到Cn

5、按顺序连为C1C2C3......Cn即为加密结果。

数据补位一般有NoPadding和PKCS7Padding(JAVA中是PKCS5Padding)填充方式,PKCS7Padding和PKCS5Padding实际只是协议不一样,根据相关资料说明:PKCS5Padding明确定义了加密块是8字节,PKCS7Padding加密快可以是1-255之间。但是封装的DES算法默认都是8字节,所以可以认为他们一样。数据补位实际是在数据不满8字节的倍数,才补充到8字节的倍数的填充过程。

NoPadding填充方式:算法本身不填充,比如.NET的padding提供了有None,Zeros方式,分别为不填充和填充0的方式。

PKCS7Padding(PKCS5Padding)填充方式:为.NET和JAVA的默认填充方式,对加密数据字节长度对8取余为r,如r大于0,则补8-r个字节,字节为8-r的值;如果r等于0,则补8个字节8。比如:

加密字符串为为AAA,则补位为AAA55555;加密字符串为BBBBBB,则补位为BBBBBB22;加密字符串为CCCCCCCC,则补位为CCCCCCCC88888888。

.NET中的DES加密

对于.NET,框架在System.Security.Cryptography命名空间下提供了DESCryptoServiceProvider作为System.Security.Cryptography.DES加密解密的包装接口,它提供了如下的4个方法:

public override ICryptoTransform CreateDecryptor(byte[] rgbKey, byte[] rgbIV)

public override ICryptoTransform CreateEncryptor(byte[] rgbKey, byte[] rgbIV)

public override void GenerateIV()

public override void GenerateKey()

java中RDES的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、java中RDES的信息别忘了在本站进行查找喔。