我正在与一家公司整合。Net应用程序,它使用对称加密。我的应用程序是基于Java的。以下是报告。Net代码,该代码由使用对称加密的团队共享;
public static string SymmetricEncrypt<T>(string value, string PrivateKey, string SALT_STRING) where T : SymmetricAlgorithm, new()
{
PasswordDeriveBytes rgb =
new PasswordDeriveBytes(PrivateKey ,
Encoding.Unicode.GetBytes(SALT_STRING));
SymmetricAlgorithm algorithm = new T();
byte[] rgbKey = rgb.GetBytes(algorithm.KeySize >> 3);
byte[] rgbIV = rgb.GetBytes(algorithm.BlockSize >> 3);
ICryptoTransform transform = algorithm.CreateEncryptor(rgbKey, rgbIV);
using (MemoryStream buffer = new MemoryStream())
{
using (CryptoStream stream =
new CryptoStream(buffer, transform, CryptoStreamMode.Write))
{
using (StreamWriter writer = new StreamWriter(stream, Encoding.Unicode))
{
writer.Write(value);
}
}
return Convert.ToBase64String(buffer.ToArray());
}
}
看着这张照片。Net文档中,我可以看到SymmetricEncrypt类默认使用Rijndael加密。我还发现了一个类似于bouncy castle中“PasswordDeriveBytes”实现的类,它实现了“PKCS5S1”算法,用于使用迭代计数为100的salt生成密钥。但我仍然无法生成所需的精确加密。Net应用程序。以下代码是我迄今为止尝试过的代码;
import java.security.InvalidAlgorithmParameterException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import mtnsa.sorb.handler.PKCS5Test.PasswordDeriveBytes;
import org.bouncycastle.crypto.digests.SHA1Digest;
import org.bouncycastle.crypto.generators.PKCS5S1ParametersGenerator;
import org.bouncycastle.crypto.params.KeyParameter;
import org.bouncycastle.util.encoders.Base64;
public class EncryptionHelper {
public static void main(String[] args)throws Exception {
encrypt("FTTH","HhN01vcEEtMmwdNFliM8QYg0Y89xzBOJJG7BHARC7g", "002400000480000094000000060200000024000052534131000400000100010085525e9438e9fae122f71ec7124" +
"443bf2f9f57f5f3760b3704df168493004b9ef68413f500d54fa9fa3869b42b1e2365204826e54b618d56e7e575f2" +
"7f675f0eae3ea8458a8ee1e92dc3f4bfc34fbe23851afa9d2c28fc8cd5b124f60a03a06bfb598bc3acbd8c4380ae" +
"f02cc58bdf955d140390f740a7e115c59e3b3b5758ca");
}
public static String encrypt(final String valueToEncrpt, final String saltString, final String privateKey) throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, InvalidAlgorithmParameterException, IllegalBlockSizeException, BadPaddingException{
String encrptedValue = null;
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
byte[] password = privateKey.getBytes();
byte[] salt = saltString.getBytes();
PKCS5S1ParametersGenerator generator = new PasswordDeriveBytes(new SHA1Digest());
generator.init(password, salt, 100);
byte[] keyArr = ((KeyParameter)generator.generateDerivedParameters(128)).getKey();
byte[] IvArr = ((KeyParameter)generator.generateDerivedParameters(128)).getKey();
cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(keyArr,"AES"),new IvParameterSpec(IvArr));
byte[]test = cipher.doFinal(valueToEncrpt.getBytes());
System.out.println(new String(Base64.encode(test)));
return encrptedValue;
}
}
在Java代码中,我给出了用于测试目的的示例SALT密钥和PRIVATE密钥。但是我仍然无法得到由.Net应用程序。下面是一个示例纯文本和加密值,我从。我在Java代码中复制失败的网络应用程序。
纯文本值:FTTH
加密值:MjgmbdT3Vg6RW/7K1BjQ/Q==
这方面的任何帮助都非常感谢,因为我目前没有想法。
谢谢大家的宝贵意见。我已经请求过了。Net模块作者将其实现更改为使用RFC2898DeriveBytes
本文向大家介绍Web服务器和应用程序服务器之间的区别,包括了Web服务器和应用程序服务器之间的区别的使用技巧和注意事项,需要的朋友参考一下 服务器是一个中心位置,通过网络应用程序可以存储和访问信息和程序。Web Server是一种服务器,它接受数据请求并返回相关文档,而Application Server包含一个ejb容器组件以及运行企业应用程序。 以下是Web服务器和应用程序服务器之间的重要区别
请告诉我web服务器、web容器和应用程序服务器之间的区别。
问题内容: 我正在用Java编写Web应用程序,并且该WAR应用程序可以部署到不同的应用程序服务器,例如Tomcat / JBoss / Jetty / Weblogic。 为了进行诊断,我想实现一个动态网页来收集各种环境/系统信息,以便客户可以提供这些信息以支持工程师进行诊断。 一条信息是有用的是应用程序服务器的名称和版本,此应用程序部署到,如,,,等。 我只是想知道是否有任何 标准方法 可以从
问题内容: 我有2个应用程序,一个是用C编写的,另一个是用Java编写的,它们假定在同一台机器上运行。在它们之间实施IPC的最佳方法是什么? 最好的含义是可移植性,最小的用户意识(防火墙弹出窗口…)等。 问题答案: 我将使用Sockets over loop back开始。这样,您就可以发送文本或二进制数据,并在一个进程开始或结束时彻底处理。延迟大约为20-50微秒,具体取决于您对数据进行的处理以
Azure容器服务和Web App for Containers有什么区别? 它们似乎都提供了一个完全托管的平台,我们可以在这个平台上部署容器。我觉得容器的Web应用程序必须提供更多的东西,但我没有看到。我已经阅读了Azure Container Service FAQ和Web App for Containers intro page,但对我来说区别并不明显。
应用程序服务是一项基于 HTTP 的服务,用于托管 Web 应用程序、REST API 和移动后端。 应用程序服务是一项基于 HTTP 的服务,用于托管 Web 应用程序、REST API 和移动后端。支持 ASP.NET、ASP.NET Core、Java、Ruby、Node.js、PHP 或 Python等主流编程语言,用户可以无需管理底层基础设置,即可简单、高效、安全和灵活地对应用进行部署、