Tag: encryption

Java / .NET中的RSA加密和.NET中的解密

我的应用程序有Java和.NET客户端,我的应用程序是.NET。 我的客户将发送一个使用RSA公钥加密的XML文件,我需要使用.NET解密它 对于字符串说“Achinth Anand Gurkhi”,Java RSA加密方法生成以下加密字符串: e8s2Ap3R1AwoaKB7OPCwkf0vhAVGaQisdoq2Yo0BvwcQ7v3oVtMOVc5wsnIyNVOSZV543imwIiBer0HSXRe8PoBD4jj0tTxtLA+bdoR40oQJD2UmZ4OpAH3g92wLXYd4bVvjllcCPPc0tSr/nzEKeZHcnhf6cGpuwfKyFNbXW2vtlEfmRd+LGqlixPRlx1OnsSMNNw+u/5IBs8MauY4Uwq1Lovlgd9f/8WTOvq9ityr84vGLMRGs4wpC7+fFNk8jGuNZgoCDLZw2RqrUd8FBFvN2wCRZXnS7Wg4QjiBdmnq0OsAwK9OFwqnil7DNnDnlytlecR5oYkDhO2fC4FzFiA== 对于相同的字符串,.NET RSA加密方法使用Java程序使用的相同公钥生成以下加密字符串: iJO4hwhXGX27jzK87X9gxzzbKpgf7FKhe6UcY7eoiCpLskOatgCMZTm0aTDuwRZGJGbZCIZt+JI9X8LxwOLmIbv5LGyDq+a8jkrPu+pDRvg2uRuKeQj2yBRcp36X+xFf61ux24NaX2RTCY9YfJcUis9NjEkL0eQ3gC79xO0vuBjaUA2oYOt0Mlr7DmKE+b0lz25J/WJuSW83g2oZOlvJ4RnsrFChu0vHnkHCQo9JVjhMc+Onj7+lbI1CDgGq4XigZrHt+j564y3sc3z0oQYfdZkF3yUZrzd3sJjd9KmryHf52eVb9/qgL2/Za1jUwTzKIOvtG/bQpR2ka7Qu1ZqbxQ== 但是我使用匹配私钥的.NET解密方法能够将两者解密回相同的字符串“Achinth Anand Gurkhi”。 不同的加密字符串如何返回相同的值?

用triple des加密完整对象

我需要加密一个完整的java对象。 我有一个我在互联网上看到的代码,它显示了如何加密和解密文本而不是java对象。 所以我很困惑这是否可以加密完整的java对象。 我正在使用的代码如下。 package security; import java.security.spec.KeySpec; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESedeKeySpec; import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; /** * This class defines methods for encrypting and decrypting using the Triple DES * algorithm and for generating, reading and writing Triple DES keys. It also * defines a main() method that allows these […]

Java Triple DES加密,带有2个不同的密钥

我正在尝试使用具有两个不同密钥的三重DES来加密数据,因此给定两个密钥k1和k2,密码文本将是Ek1(Dk2(Ek1(明文)))其中E是加密和D解密。 我正在尝试使用Java中的DES算法来模拟这个。 这是代码: public static void main(String[] args) { SecretKey k1 = generateDESkey(); SecretKey k2 = generateDESkey(); String firstEncryption = desEncryption(“plaintext”, k1); String decryption = desDecryption(firstEncryption, k2); String secondEncryption = desEncryption(decryption, k1); } public static SecretKey generateDESkey() { KeyGenerator keyGen = null; try { keyGen = KeyGenerator.getInstance(“DES”); } catch (NoSuchAlgorithmException ex) { Logger.getLogger(Test.class .getName()).log(Level.SEVERE, null, […]

Nodejs Crypto Javascript中的javax.crypto.Cipher等效代码

我正在尝试将以下java代码转换为nodejs。 public static String encrypt(String accessToken) throws Exception { Cipher cipher = Cipher.getInstance(“AES”); String merchantKey = “11111111111111111111”; String st = StringUtils.substring(merchantKey, 0, 16); System.out.println(st); Key secretKey = new SecretKeySpec(st.getBytes(), “AES”); cipher.init(Cipher.ENCRYPT_MODE, secretKey); byte[] encryptedByte = cipher.doFinal(accessToken.getBytes()); // convert the byte to hex format StringBuffer sb = new StringBuffer(); for (int i = 0; i < […]

Java AES解密问题

我的任务是解密使用以下标准加密的Java文件: AES加密算法,128位密钥,ECB模式和PKCS7填充。 加密文件格式为: – 第一个字节为hex0x31 – 指定使用的加密方法(AES为1) – 后跟输入文件的加密字节 我还必须下载文件,所以这是我到目前为止的尝试: 下载代码,我跳过这里的第一个字节,因为它不是必需的,也没有加密: final String PATH = “/sdcard/” + IMEI + “.xml”; //put the downloaded file here try { URL url = new URL(context.getString(R.string.xml_feed) + IMEI + “.xml”); enc_File = new File(PATH); long startTime = System.currentTimeMillis(); /* Open a connection to that URL. */ URLConnection ucon = […]

在C#中使用RSA加密和在Java中使用解密时出现填充错误

目前,当使用Java解密在C#中创建的Base64编码的RSA加密字符串时,我收到以下错误: javax.crypto.BadPaddingException:不是PKCS#1块类型2或零填充 .NET和Java交换之间的设置过程是通过在.NET密钥库中创建私钥来完成的,然后从提取的PEM文件中创建,使用keytool创建带有私钥的JKS版本。 Java加载已创建的JKS并将Base64字符串解码为字节数组,然后使用私钥进行解密。 以下是我在C#中创建加密字符串的代码: public string Encrypt(string value) { byte[] baIn = null; byte[] baRet = null; string keyContainerName = “test”; CspParameters cp = new CspParameters(); cp.Flags = CspProviderFlags.UseMachineKeyStore; cp.KeyContainerName = keyContainerName; RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(cp); // Convert the input string to a byte array baIn = UnicodeEncoding.Unicode.GetBytes(value); // Encrypt baRet = rsa.Encrypt(baIn, […]

为什么SSLSocketFactory缺少setEnabledCipherSuites?

SSLSocketFactory提供了getDefaultCipherSuites (在套接字上默认启用的密码)和getSupportedCipherSuites (如果需要,可以启用密码)。 但是, SSLSocketFactory不提供setEnabledCipherSuites来配置密码列表一次以在后续套接字上提供首选项。 事实上,我认为将setEnabledCipherSuites作为SSLSocket一部分确实使得wok流程复杂化。 例如, HttpsURLConnection不提供getSocket ,它确实打破了这个流程: … SSLContext context = SSLContext.getInstance(“TLS”); context.init(null, trustManager.getTrustManagers(), null); HttpsURLConnection connection = (HttpsURLConnection) url.openConnection(); connection.setSSLSocketFactory(context.getSocketFactory()); 我认为关于SSLContext因为它有像getDefaultSSLParameters和getSupportedSSLParameters这样的方法。 我正试图为(in)能力提出一个合理的安全工程理由,但我不能。 也许是决定软件工程的原因。 (我怀疑这是一个很好的理由,而且我目前缺乏洞察力)。 为什么Java缺乏配置SSLSocketFactory的能力? 它显然是一个设计决策,我试图理解为什么它是以牺牲图书馆相关部分的安全性为代价的。

加密mongodb中的密码字段

我有以下代码,它将userName和password插入数据库,但密码以纯文本格式存储。 我的意思是当我查看数据库时,我可以看到插入的密码。 我想以encrypted格式存储password MongoClient client = new MongoClient(“localhost”,27017); DB db = client.getDB(“Test”); DBCollection collection = db.getCollection(“EncryptionDemo”); BasicDBObject documentDetail = new BasicDBObject(); documentDetail.put(“userName”, “admin12”); documentDetail.put(“password”, “12345”); collection.insert(documentDetail); 我怎样才能做到这一点?

RSA。 Java加密.NET解密

我需要实现登录.NET Soap Web Service。 此Web服务有方法 AuthenticateUser(username, password) 和密码应使用RSA公钥加密。 在我想要做的下面: public static final String PUBLIC = “q/9CujExqL6rsMMO22WWIotoXDCw5KEmGQJqL9UJEfoErwZ9ZCm3OwMTSlAMSfoXEMA04Y1rhfYC3MtU/7dYEoREfsvOPGDBWanTKyMzv2otCfiURyQoghEdkhv3ipQQaaErT7lfBKobJsdqJlvxo4PCOUas2Z6YpoMYgthzTiM=”; public static final String EXPONENT = “AQAB”; public static PublicKey getPublicKey() throws Exception{ byte[] modulusBytes = Base64.decode(PUBLIC, 0); byte[] exponentBytes = Base64.decode(EXPONENT, 0); BigInteger modulus = new BigInteger(1, (modulusBytes) ); BigInteger exponent = new BigInteger(1, (exponentBytes)); RSAPublicKeySpec spec = […]

如何在C中使用crypt库来进行DES加密? (setkey,encrypt,crypt等)

我需要在C中做一些简单的DES加密来与一些旧代码进行交互。 根据我的理解,你可以使用“crypt”库,使用函数setkey,encrypt,crypt等等。我一直在搞乱它并且无法正确使用它。 缺少setkey / encrypt手册页上的示例。 我想得到与我能用一些java代码得到的相同的输出(见下文)。 所以假设我在C中有两个字符数组。 char *message = “hellothe”; char *key = “iamakey0”; 有人可以举例说明如何使用setkey / encrypt加密这些并获得与java代码相同的结果吗? 我意识到你必须将消息和密钥放入一个64字节的数组中,其中每个字符代表一点,但其中一些也令人困惑。 显然你必须得到正确的位平价或其他东西吗? public static byte[] encryptDES(byte[] message, byte[] key) { byte[] encrypted = new byte[0]; try{ Cipher c = Cipher.getInstance(“DES”); c.init(Cipher.ENCRYPT_MODE,new SecretKeySpec(key,”DES”)); encrypted = c.doFinal(message); } catch (Exception e) { e.printStackTrace(); } return encrypted; }