byte[] toEncryptArray = Convert.FromBase64String(encryptedString)
MD5CryptoServiceProvider hashmd5 = new MD5CryptoServiceProvider();
byte[] keyArray = hashmd5.ComputeHash(System.Text.Encoding.Unicode.GetBytes(key));
hashmd5.Clear();
TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();
tdes.Key = keyArray;
tdes.Mode = CipherMode.ECB;
tdes.Padding = PaddingMode.PKCS7;
ICryptoTransform cTransform = tdes.CreateDecryptor();
byte[] resultArray = cTransform.TransformFinalBlock(
toEncryptArray, 0, toEncryptArray.Length);
}
byte[] message = Base64.decodeBase64(encryptedText.getBytes("UTF-8"));
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] digestOfUsername = md.digest(key.getBytes("UTF-8"));
byte[] keyBytes = Arrays.copyOf(digestOfUsername, 24);
SecretKey key = new SecretKeySpec(keyBytes, "DESede");
Cipher decipher = Cipher.getInstance("DESede/ECB/PKCS5Padding",new SunJCE());
decipher.init(Cipher.DECRYPT_MODE, key);
byte[] plainText = decipher.doFinal(message);// BadpaddingException
String decryptedString = new String(plainText);
.NET代码工作良好,但java是代码没有给出正确的输出,它给出了BadpaddingException:at dofinal(),请纠正我做错的地方。
好的,所以问题是您正在将加密的字节转换为十六进制字符串(使用asHex方法),但没有将十六进制字符串正确地转换回字节数组以进行解密。不能使用GetBytes。
可以使用以下方法将十六进制字符串转换为字节数组:
public static byte[] fromHexString(String s) {
int len = s.length();
byte[] data = new byte[len / 2];
for (int i = 0; i < len; i += 2) {
data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4)
+ Character.digit(s.charAt(i+1), 16));
}
return data;
}
然后将解密方法更改为:
original = decipher.doFinal(fromHexString(message));
我正在使用以下命名查询: 该查询在mysql中运行良好: 但当我试图运行我的代码时,我得到了QuerySyntaxException:
我有一个简单的RestController应用程序- 它在SpringBoot(http://localhost:8080/greeting)上工作得很好,但是当我创建一个WAR并将其部署到Tomcat(9.0.2)上时,它会抛出一个404。
我们正试图在MVC4控制器中的一种操作方法中防止跨站点请求伪造攻击。下面是我们所做的代码更改,它在VS 2013中运行良好,但在VS 2012中抛出错误,与我们在Windows Server 2012-IIS 8中部署时遇到的错误相同。 View.cshtml Controller.cs VS2013-以上代码运行良好 VS2012-引发以下错误 http://schemas.xmlsoap.or
我正在使用gephi-toolkit(0.9.1)生成图,编写一个javaSE应用程序,并对其进行测试,等等。 当将此代码复制粘贴到我的EJB(尝试了所有三种类型)时,代码开始生成: runtimeException:java.lang.NullPointerException 将图形导出到SVG(也可以导出PNG)。 我显式检查我的对象-它们不是空的。因此,gephi-toolkit的一些深层内
这是我在注册服务人员后每次刷新时遇到的错误。我已经确定了服务人员。js文件存在于根目录中。此外,该服务人员已注册,工作正常。但我还是不断地犯这个错误。我还在本地主机上工作。 这是我的service-worker.js文件: 剧本js文件:
我正在尝试创建AES加密/解密方法,但是如果不使用AES / ECB / NoPadding,我似乎无法获得原始输入。现在我正在尝试使用AES / CBC / PKCS7Padding。我已经确认在文件中读取和写入字节工作正常。使用PKCS7填充,我从中得到一个糟糕的填充异常 在解密方法中。没有填充,没有例外 - 但是输出是混乱的。我花了很多时间浏览有关此完全相同问题的其他帖子,但我似乎找不到适合