【发布时间】:2020-11-12 01:42:13
【问题描述】:
我的应用程序使用 RSA 加密数据以通过 HTTP 发送到远程服务器。当然数据是 byte[] 形式的。是否可以安全地转换为字符串,进行 url 编码,并在 URL 的查询中发送?还是需要编码?
【问题讨论】:
标签: java http encryption rsa
我的应用程序使用 RSA 加密数据以通过 HTTP 发送到远程服务器。当然数据是 byte[] 形式的。是否可以安全地转换为字符串,进行 url 编码,并在 URL 的查询中发送?还是需要编码?
【问题讨论】:
标签: java http encryption rsa
是的,当然。这里没有特定于 RSA 的内容。你只是在上传二进制数据。
在 GET 查询字符串中发送:是的,您可以对其进行 URL 编码(或对其进行 base64 编码,然后对其进行 URL 编码),前提是它不太长 - 某些客户端和服务器具有 URL 长度限制。
您可以 POST 任意长度的数据;您可以 POST 作为原始二进制文件,假设另一端可以处理它 - 即您可以绕过框架中试图将其解析为参数变量的部分 - 或者再次作为 URL 编码/base-64-encoded-URL-encoded。
您可以将其包装为文件上传(多部分/表单数据)并发布。同样是任何长度的数据,这将是 base64 编码的,所以可能会更短一些。它也将更容易集成到您的服务器应用程序框架中,因为它可能会内置文件上传支持。
【讨论】:
为了安全起见,您应该将其编码为 Base64。您可以使用 Apache Commons Codec 项目中的 Base64 类。
【讨论】:
使用 PHP 使用 rawurlencode() 否则 $_GET 数据将不会始终正确编码...有关 rawurlencode() 和 urlencode() 之间的区别,请参阅手册。
【讨论】: