简体   繁体   English

用ASP加密字符串用Java解密

[英]Encrypt string in ASP decrypt in Java

I have below ASP code to encrypt and decrypt in asp. 我下面有ASP代码可以在asp中进行加密和解密。 It works fine. 工作正常。 I want string to be encrypted in asp and decrypt it in java. 我希望在asp中对字符串进行加密,然后在java中对其进行解密。

set obj=Server.CreateObject("System.Security.Cryptography.RijndaelManaged")
Set endocde = Server.CreateObject("System.Text.endocdeEncoding")

un = endocde.GetBytes_4("Test Encryption")                                      
obj.key = endocde.GetBytes_4("SomeRandomKey")                       
obj.iv =  endocde.GetBytes_4("SomeRandomIv")    

set enc=obj.CreateEncryptor()   
uncUn=enc.TransformFinalBlock((un),0,lenb(un))          
eUn=endocde.GetString((uncUn))      

set dec=obj.CreateDecryptor()
byted=dec.TransformFinalBlock((uncUn),0,lenb(uncUn))
sd=endocde.GetString((byted))

I tried encrypted string to be decrypted using below code in java but doesnt work. 我尝试使用Java中的以下代码解密加密的字符串,但不起作用。 I tried sending encrypted data in UTF8/Base64 but doesnt work. 我尝试在UTF8 / Base64中发送加密的数据,但是不起作用。 Please help. 请帮忙。

String iv = "sameIVasASP";
String key = "sameKeyasASP";

IvParameterSpec iv = new IvParameterSpec(iv.getBytes("UTF-8"));
SecretKeySpec skeySpec = new SecretKeySpec(key.getBytes("UTF-8"), "Rijndael");
Cipher cipher = Cipher.getInstance("Rijndael/CBC/PKCS5PADDING");    
cipher.init(Cipher.DECRYPT_MODE, skeySpec, iv);             
byte[] decode = Base64.getDecoder().decode(<encrpted string>);              
System.out.println( new String(cipher.doFinal(decode)).getBytes("UTF-8"));

How to encode/decode UTF-8 string to base64 in c# : 如何在C#中将UTF-8字符串编码/解码为base64:

byte[] bytes = Encoding.UTF8.GetBytes("string-to-encode");
string base64 = Convert.ToBase64String(bytes);

How to encode/decode UTF-8 string to base64 in Java 如何在Java中将UTF-8字符串编码/解码为base64

Java8 version: Java8版本:

byte[] decodedBytes = Base64.getDecoder().decode(base64encodedstring);

Pre-Java8 example (with Base64 class of Commons Codec): Java8之前的示例(具有Commons Codec的Base64类):

byte[] decodedBytes = Base64.decodeBase64(encodedBytes);

(In Java you have many option to do that (not just these), if you are using at least Java8, there is a built in class for that, for previous versions I usually use the Base64 class in Apache Commons Codec ) (在Java中,您可以有很多选择(不仅仅是这些),如果您至少使用Java8,则有一个内置 ,对于以前的版本,我通常在Apache Commons Codec中使用Base64类

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM