Java中的.NET TripleDESCryptoServiceProvider等效项

Java中的.NET TripleDESCryptoServiceProvider等效项,第1张

Java中的.NET TripleDESCryptoServiceProvider等效项

代码如下,但首先要注意一些事项。

  1. 必须为每个消息选择一个不同的初始化向量。硬编码初始化向量没有任何意义。IV应该与密文一起发送给消息接收者(这不是秘密)。
  2. 我将自己的实用程序类用于base-64编码。您可以使用
    sun.misc.base64Enprer
    sun.misc.base64Deprer
    而是使用BouncyCastle之类的第三方库,或者编写自己的库。
  3. 您正在使用2键三重DES,其中第一键和第三键相同。我进行了修改
    sharedkey
    以反映这一点,因为Java DESede密码始终需要192位密钥。由密钥生成器来处理密钥选项。
  4. CBC IV只有64位。我只使用的前64位
    sharedvector

此类应与C#版本互 *** 作。

import javax.crypto.Cipher;import javax.crypto.spec.IvParameterSpec;import javax.crypto.spec.SecretKeySpec;public class Encryption{  private static byte[] sharedkey = {    0x01, 0x02, 0x03, 0x05, 0x07, 0x0B, 0x0D, 0x11,     0x12, 0x11, 0x0D, 0x0B, 0x07, 0x02, 0x04, 0x08,     0x01, 0x02, 0x03, 0x05, 0x07, 0x0B, 0x0D, 0x11  };  private static byte[] sharedvector = {    0x01, 0x02, 0x03, 0x05, 0x07, 0x0B, 0x0D, 0x11  };  public static void main(String... argv)    throws Exception  {    String plaintext = "userNameHere:passwordHere";    String ciphertext = encrypt(plaintext);    System.out.println(ciphertext);    System.out.println(decrypt(ciphertext));  }  public static String encrypt(String plaintext)    throws Exception  {    Cipher c = Cipher.getInstance("DESede/CBC/PKCS5Padding");    c.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(sharedkey, "DESede"), new IvParameterSpec(sharedvector));    byte[] encrypted = c.doFinal(plaintext.getBytes("UTF-8"));    return base64.enpre(encrypted);  }  public static String decrypt(String ciphertext)    throws Exception  {    Cipher c = Cipher.getInstance("DESede/CBC/PKCS5Padding");    c.init(Cipher.DECRYPT_MODE, new SecretKeySpec(sharedkey, "DESede"), new IvParameterSpec(sharedvector));    byte[] decrypted = c.doFinal(base64.depre(ciphertext));    return new String(decrypted, "UTF-8");  }}

输出:

zQPZgQHpjxR + 41Bc6 + 2Bvqo7 + pQAxBBVN + 0V1tRXcOc =

userNameHere:passwordHere



欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5133679.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-11-17
下一篇2022-11-17

发表评论

登录后才能评论

评论列表(0条)

    保存