Java-将消息编码为字符串
我正在尝试为HTTP请求实现我自己的授权版本。现在我面临着一个我不知道如何解决的问题 如下面的代码所示,我正在使用RSA算法加密字符串消息。但问题是,结果是我得到了类Java-将消息编码为字符串,java,rest,encryption,httprequest,rsa,Java,Rest,Encryption,Httprequest,Rsa,我正在尝试为HTTP请求实现我自己的授权版本。现在我面临着一个我不知道如何解决的问题 如下面的代码所示,我正在使用RSA算法加密字符串消息。但问题是,结果是我得到了类SealedObject的对象。我需要有可能使用这个加密字符串作为标题-现在使用REST客户端,比如Postman。所以,我的问题是:如何将SealedObject解析为String?或者我应该如何将消息加密到字符串?这可能吗 KeyPairGenerator kpg = KeyPairGenerator.getInstance("
SealedObject
的对象。我需要有可能使用这个加密字符串作为标题-现在使用REST客户端,比如Postman。所以,我的问题是:如何将SealedObject
解析为String
?或者我应该如何将消息加密到字符串
?这可能吗
KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");
KeyPair keyPair = kpg.generateKeyPair();
String message = "Secret message";
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, keyPair.getPublic());
SealedObject encryptedMessage = new SealedObject(message, cipher);
提前感谢:)首先想到的是: SealeObject是一个可序列化对象,这意味着您可以将其转换为字节,然后使用Base64将其转换为字符串: 大概是这样的:
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutput out = null;
try {
out = new ObjectOutputStream(bos);
out.writeObject(sealedObject);
out.flush();
byte[] yourBytes = bos.toByteArray();
String base64StringHeader = Base64.encodeBase64String(yourBytes);
} finally {
try {
bos.close();
} catch (IOException ex) {
// ignore close exception
}
}
byte[] backToBytes = Base64.decodeBase64(base64StringHeader);
ByteArrayInputStream bis = new ByteArrayInputStream(backToBytes);
ObjectInput in = null;
try {
in = new ObjectInputStream(bis);
SealedObject = in.readObject();
...
} finally {
try {
if (in != null) {
in.close();
}
} catch (IOException ex) {
// ignore close exception
}
然后,当您收到请求时,执行以下操作:
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutput out = null;
try {
out = new ObjectOutputStream(bos);
out.writeObject(sealedObject);
out.flush();
byte[] yourBytes = bos.toByteArray();
String base64StringHeader = Base64.encodeBase64String(yourBytes);
} finally {
try {
bos.close();
} catch (IOException ex) {
// ignore close exception
}
}
byte[] backToBytes = Base64.decodeBase64(base64StringHeader);
ByteArrayInputStream bis = new ByteArrayInputStream(backToBytes);
ObjectInput in = null;
try {
in = new ObjectInputStream(bis);
SealedObject = in.readObject();
...
} finally {
try {
if (in != null) {
in.close();
}
} catch (IOException ex) {
// ignore close exception
}
}使用序列化接口