Tag: encryption

如何在服务器和GWT客户端之间使用RSA?

我想在Java Server后端和GWT客户端之间加密数据。 在GWT客户端上,我使用sbn.js库。 它工作得非常快,并且比gwt-crypto快得多。 这是我如何在给定(e,n)RSA的客户端加密。 我创建了一个JSFiddle : var n = “BC86E3DC782C446EE756B874ACECF2A115E613021EAF1ED5EF295BEC2BED899D26FE2EC896BF9DE84FE381AF67A7B7CBB48D85235E72AB595ABF8FE840D5F8DB”; var e = “3”; var d = “7daf4292fac82d9f44e47af87348a1c0b9440cac1474bf394a1b929d729e5bbcf402f29a9300e11b478c091f7e5dacd3f8edae2effe3164d7e0eeada87ee817b”; function do_encrypt() { var before = new Date(); var rsa = new RSAKey(); rsa.setPublic(n, e); var res = rsa.encrypt($(“#plaintext”).val()); $(“#ciphertext”).val(res); $(“#cipherb64”).val(hex2b64(res)); console.log(“res”); } $(“#encrypt”).click(function () { do_encrypt(); }); 我使用加密明文的hex表示在服务器上解密。 这是我在服务器上解密的方式。 我使用以下库: compile ‘org.bouncycastle:bcprov-jdk15on:1.51’ compile ‘org.bouncycastle:bcprov-ext-jdk15on:1.51’ 以下是我使用(d,n)RSA在服务器上解密的方法: […]

三重DES加密C# – 用Java解密

我从客户端服务器获取一个Triple DES解密字符串,该字符串已用c#编码(见下文): using System.IO; using System; using System.Security.Cryptography; using System.Collections; using System.Text; class Program { static void Main() { Console.WriteLine(“Hello, World!”); var encryption = TripleDESEncrypt(“12345678901234”, “C9AF269DF8A78A06D1216BFFF8F0536A”); Console.WriteLine(encryption); } public static string TripleDESEncrypt(string strClearText, string strKey) { byte[] bytClearText; byte[] bytClearTextChunk = new byte[8]; byte[] bytEncryptedChunk = new byte[8]; int BytesCount = 0; int nArrayPosition = […]

如何使用OpenSSL解密Java AES加密数据?

我正在连接使用AES加密数据的旧Java应用程序(应用程序无法更改)。 以下是原始Java代码实例化AES密码的方法: SecretKeySpec skeySpec = new SecretKeySpec(key, “AES”); cipher = Cipher.getInstance(“AES”); cipher.init(Cipher.ENCRYPT_MODE, skeySpec ); 我是一名C / C ++开发人员,而不是Java,但据我所知,这个遗留Java代码没有指定模式,也没有指定初始化向量。 有人碰巧知道Java默认使用什么,因为它没有指定? 我们需要新的C / C ++应用程序来解密Java加密的数据。 但是我不知道OpenSSL的初始化向量和链接模式使用什么,因为我不知道java的用途。

在python中加密并使用AES-CFB在Java中解密

我知道一个与此非常类似的问题( 如何在Python中加密并在Java中解密? )但我有一个不同的问题。 我的问题是,我无法正确解密Java。 尽管使用了正确的密钥和IV,我仍然在解密后获得垃圾字符。 我在Java中没有任何编译/运行时错误或exception,因此我相信我正在使用正确的参数进行解密。 Python加密代码 – from Crypto.Cipher import AES import base64 key = ‘0123456789012345’ iv = ‘RandomInitVector’ raw = ‘samplePlainText’ cipher = AES.new(key,AES.MODE_CFB,iv) encrypted = base64.b64encode(iv + cipher.encrypt(raw)) Java解密代码 – private static String KEY = “0123456789012345”; public static String decrypt(String encrypted_encoded_string) throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException { String plain_text = “”; […]

java和.net中的加密结果不一样

我的.net项目中有一个加密密码的方法 public string Encrypt(string plainText) { string PassPhrase = “#$^&*!@!$”; string SaltValue = “R@j@}{BAe”; int PasswordIterations = Convert.ToInt32(textBox5.Text); //amend to match java encryption iteration string InitVector = “@1B2c3D4e5F6g7H8”; int KeySize = 256; //amend to match java encryption key size byte[] initVectorBytes = Encoding.ASCII.GetBytes(InitVector); byte[] saltValueBytes = Encoding.ASCII.GetBytes(SaltValue); byte[] plainTextBytes = Encoding.UTF8.GetBytes(plainText); PasswordDeriveBytes password= new PasswordDeriveBytes( […]

使用C#CryptoStream的Java等价物加密和解密字符串

我正在寻找用Java开发移动平台操作系统的应用程序。 我已经在C#WPF中为Windows环境开发了一个应用程序。 我正在使用cryptostream来使用以下代码加密和解密字符串。 下面显示的代码只是加密 public string encrypt(string encryptionString) { byte[] clearTextBytes = Encoding.UTF8.GetBytes(encryptionString); SymmetricAlgorithm rijn = SymmetricAlgorithm.Create(); MemoryStream ms = new MemoryStream(); byte[] rgbIV = Encoding.ASCII.GetBytes(“ryojvlzmdalyglrj”); byte[] key = Encoding.ASCII.GetBytes(“hcxilkqbbhczfeultgbskdmaunivmfuo”); CryptoStream cs = new CryptoStream(ms, rijn.CreateEncryptor(key, rgbIV), CryptoStreamMode.Write); cs.Write(clearTextBytes, 0, clearTextBytes.Length); cs.Close(); return Convert.ToBase64String(ms.ToArray()); } 加密的字符串存储在在线数据库中。 我需要做的是让java应用程序能够从数据库中读取字符串并使用C#应用程序中的相同加密密钥解密字符串。 谢谢你的帮助。

解密C#RIJNDAEL编码文本

我正在Java中实现与第三方应用程序的通信。 作为登录过程的一部分,第三方应用程序正在发送加密的字符串,我必须将其解码并发回。 我花了差不多2天googeling和阅读post,但我找不到正确的方法来实现这一点。 我有一个测试用例,其中加密的字符串是“c1W2YO1vYQzu6czteEidrG0U4g5gT4h57vAlP7tdjcY =”,用密码“GAT”解密必须返回“101714994”。 我所说的文档说明:授权字符串使用以下设置加密: 填充输入数据:PKCS * 7 密码字节数组长度为32个字节。 密码字符串转换为UTF-16编码的字节数组,然后用零填充字节数组,最长为32个字节。 更长的密码被截断。 这是如何解密授权字符串的C#示例: /// /// Decrypts a string. /// /// The string to decrypt. /// The password to use. /// The decrypted string. private static string DecryptString(string content, string password) { Rijndael aes; byte[] retVal = null; byte[] contentBytes; byte[] passwordBytes; byte[] ivBytes; try { […]

在Java加密和解密中处理IV和salt

所以我试图解密一个方法中的消息,但它不起作用,因为我需要做cipher.init(Cipher.ENCRYPT_MODE, secret)然后我尝试将new IvParameterSpec(iv)添加到cipher.init(Cipher.DECRYPT_MODE, secret, new IvParameterSpec(iv)); 。 否则,它只返回一个NullPointerException我想知道是否可以在方法中执行此操作而不是一直写入它。 我真的不能想到一个解决方案,这就是为什么我在这里。 加密工作正常但不解密。 项目运行: JRE 7 加密代码: public static String encrypt(String str) { try { SecureRandom random = new SecureRandom(); byte[] salt = new byte[16]; random.nextBytes(salt); SecretKeyFactory factory = SecretKeyFactory.getInstance(“PBKDF2WithHmacSHA1”); KeySpec spec = new PBEKeySpec(str.toCharArray(), salt, 65536, 256); SecretKey tmp = factory.generateSecret(spec); SecretKey secret = new SecretKeySpec(tmp.getEncoded(), “AES”); […]

在javascript中使用RSA加密一个小字符串,然后在服务器上的java中解密

我想使用带有公钥的RSA在javascript中加密一个小字符串,然后使用私钥在java服务器端代码中解密该字符串。 我在javascript中使用此代码: http : //www-cs-students.stanford.edu/~tjw/jsbn/示例: http : //www-cs-students.stanford.edu/~tjw/jsbn/rsa2 html的 这个代码在java方面: 加密javascript中的字符串和java中的解密 这两个代码都可以独立工作,但它们彼此不了解。 今天需要解决这个问题,或者我愿意接受任何其他以这种方式工作的非对称算法。

在Java中将RSA密钥对象导出为XML

我在Java中成功运行RSA加密/解密。 这就是我生成密钥的方式。 ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(path)); KeyPairGenerator kpg = KeyPairGenerator.getInstance(“RSA”); kpg.initialize(1024); KeyPair keypair = kpg.generateKeyPair(); oos.writeObject(keypair); 但现在我需要将我的系统与.Net代码集成。 是否可以按以下格式将此KeyPair对象导出为XML(因为.Net代码只能接受XML格式的密钥): ….. …… ….. …. ……. …… ……… ……..