gpt4 book ai didi

Java - 将消息编码为字符串

转载 作者:行者123 更新时间:2023-12-02 10:34:39 25 4
gpt4 key购买 nike

我正在尝试实现我自己的 HTTP 请求授权版本。现在我遇到了一个问题,我不知道如何解决。

如下面的代码所示,我使用 RSA 算法加密字符串消息。但问题是,结果我得到了 SealedObject 类的对象。我需要能够使用这个加密字符串作为 header - 现在使用像 Postman 这样的 REST 客户端。所以,我的问题是:如何将 SealedObject 解析为 String?或者我应该如何将消息加密为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);

提前谢谢你:)

最佳答案

首先想到的是:

SealedObject 是一个可序列化对象,这意味着您可以将其转换为字节,然后使用 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
}

}

关于Java - 将消息编码为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53382498/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com