相关疑难解决方法(0)

如何在Java中使用3DES加密/解密?

我编写的每个使用3DES在Java中编码字符串的方法都无法解密回原始字符串.有没有人有一个简单的代码片段,只能编码,然后将字符串解码回原始字符串?

我知道我在这段代码中某处犯了一个非常愚蠢的错误.以下是我到目前为止一直在使用的内容:

**注意,我没有从encrypt方法返回BASE64文本,而且我在解密方法中不是base64 un-encoding,因为我试图看看我是否在BASE64部分拼图中犯了错误.

public class TripleDESTest {

    public static void main(String[] args) {

        String text = "kyle boon";

        byte[] codedtext = new TripleDESTest().encrypt(text);
        String decodedtext  = new TripleDESTest().decrypt(codedtext);

        System.out.println(codedtext);
        System.out.println(decodedtext);
    }

    public byte[] encrypt(String message) {
        try {
            final MessageDigest md = MessageDigest.getInstance("md5");
            final byte[] digestOfPassword = md.digest("HG58YZ3CR9".getBytes("utf-8"));
            final byte[] keyBytes = Arrays.copyOf(digestOfPassword, 24);
            for (int j = 0,  k = 16; j < 8;)
            {
                keyBytes[k++] = keyBytes[j++];
            }

            final SecretKey key = new SecretKeySpec(keyBytes, "DESede");
            final IvParameterSpec …
Run Code Online (Sandbox Code Playgroud)

java encryption 3des

69
推荐指数
3
解决办法
16万
查看次数

Java TripleDESCryptoServiceProvider等效于Java

拜托,请不要问我为什么.我只是在.NET中使用此代码来加密/解密数据字符串.我现在需要在java中制作"完全"相同的功能.我已经尝试了几个DESede crypt的例子,但是它们都没有给出与.net中这个类相同的结果.

我甚至在ssl后面制作一个.net webserbvice来服务于.net写的这两种方法但是如果不用尽所有的可能性就太愚蠢了.

也许你们中的一些在这个领域更有相关性的java人将会在你的头脑中如何制作它.

谢谢 !!!

public class Encryption
{
  private static byte[] sharedkey = {...};
  private static byte[] sharedvector = {...};

  public static String Decrypt(String val)
  {
    TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();
    byte[] toDecrypt = Convert.FromBase64String(val);
    MemoryStream ms = new MemoryStream();
    CryptoStream cs = new CryptoStream(ms, tdes.CreateDecryptor( sharedkey, sharedvector ), CryptoStreamMode.Write);

    cs.Write(toDecrypt, 0, toDecrypt.Length);
    cs.FlushFinalBlock();
    return Encoding.UTF8.GetString(ms.ToArray());
  }

  public static String Encrypt(String val)
  {
    TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();
    byte[] toEncrypt = Encoding.UTF8.GetBytes(val);
    MemoryStream ms = new MemoryStream(); …
Run Code Online (Sandbox Code Playgroud)

.net c# java encryption 3des

3
推荐指数
1
解决办法
1万
查看次数

C#无法生成初始化向量IV

当我尝试为TripleDES加密器创建IV初始化向量时,出现以下错误.

请参阅代码示例:

TripleDESCryptoServiceProvider tripDES = new TripleDESCryptoServiceProvider();

byte[] key = Encoding.ASCII.GetBytes("SomeKey132123ABC");
byte[] v4 = key;
byte[] connectionString = Encoding.ASCII.GetBytes("SomeConnectionStringValue");
byte[] encryptedConnectionString = Encoding.ASCII.GetBytes("");

// Read the key and convert it to byte stream
tripDES.Key = key; 
tripDES.IV = v4;
Run Code Online (Sandbox Code Playgroud)

这是我从VS获得的例外.

指定的初始化向量(IV)与此算法的块大小不匹配.

我哪里错了?

谢谢

c# encryption cryptography initialization-vector

1
推荐指数
4
解决办法
5363
查看次数

标签 统计

encryption ×3

3des ×2

c# ×2

java ×2

.net ×1

cryptography ×1

initialization-vector ×1