首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Base64中编码的加密字符串在通过URL后没有保存吗?

在Base64中编码的加密字符串在通过URL后没有保存吗?
EN

Stack Overflow用户
提问于 2014-05-24 08:34:43
回答 1查看 1.4K关注 0票数 0

“数据”StringBase64 (URL安全版本)编码,然后加密到byte array中。此byte array被转换为String并发送到REST web服务。当它到达web服务端时,String的长度发生了变化。我不是专家,我做错什么了?

守则:

代码语言:javascript
复制
//CLIENT SIDE
import org.apache.commons.codec.binary.Base64;    

String data = "My message to be encrypted";        
PublicKey pubKey = readPublicKeyFromFile();
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, pubKey);
byte[] encryptedData = cipher.doFinal(Base64.encodeBase64URLSafe(data.getBytes()));

System.out.println("length of original data string: " + data.length());
System.out.println("length of original data string turned into byte array: " + data.getBytes().length);
System.out.println("length of data string encrypted into byte array: " + encryptedData.length);

String encryptedDataToString = new String(encrypedData,"UTF-8");
System.out.println("length encrypted String into byte array, converted back to String for url: " + encryptedDataToString.length);

httpclient = new DefaultHttpClient();
builder = new URIBuilder();
builder.setScheme("http").setHost(xxx + "webresources/GetData/" + path)
                    .setParameter("data", encryptedDataToString);
            uri = builder.build();



//SERVER SIDE
import org.apache.commons.codec.binary.Base64;

@GET
@Path("path")
@Produces("text/plain")
public String getToken(@QueryParam("data") String data) {

System.out.println("length of data: " + data.length());
System.out.println("length of data to byte array wthout decoding: " + data.getBytes().length);
System.out.println("length of data to byte decoded: " + Base64.decodeBase64(data).length);


//CONSOLE

//CLIENT SIDE
length of original data string: 37
length of original data string turned into byte array: 37
length of data string encrypted into byte array: 256
length encrypted String into byte array, converted back to String for url: 256

//SERVER SIDE
INFO: length of data: 237
INFO: length of data to byte wthout decoding: 444
INFO: length of data to byte decoded: 4

在URL中显示的数据String,T%23%EF%BF%BD%0C%EF%BF%BD%EF%BF%BD7%EF%BF%BD%EF%BF%BDk%EF%BF%BDA%EF%BF%BD%10L%EF%BF%BD%EF%BF%BD%EF%BF%BD%14%EF%BF%BD%EF%BF%BD%5E%22%15B%1Ae%01%EF%BF%BDgmE%0C%EF%BF%BD%EF%BF%BDn%EF:客户端%BF%BD%3D%EF%BF%BD%EF%BF%BD%DC%80%EF%BF%BD%EF%BF%BDIM%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BDeM%EF%BF%BD5%EF%BF%BD%EF%BF%BD%26%EF%BF%BD%1E%7D%EF%BF%BDNAQ%EF%BF%BDlT%EF%BF%BD%EF%BF%BDVXR%EF%BF%BDi%0E%EF%BF%BD%EF%BF%BD%EF%BF%BD3U%0C%EF%BF%BD%EF%BF%BD%1E%EF%BF%BD%EF%BF%BD%0Fep%EF%BF%BD%C3%A1b6%EF%BF%BD%CE%B5y9x%EF%BF%BD%EF%BF%BD%0D%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%18%7C%06%21%EF%BF%BD0%EF%BF%BD%EF%BF%BD%EF%BF%BD%03%EF%BF%BD%17%CB%8F%7D%EF%BF%BD%26A%EF%BF%BD%12%EF%BF%BD%EF%BF%BD%EF%BF%BD-%DE%8D%EF%BF%BD%EF%BF%BD%EF%BF%BDt%EF%BF%BD%EF%BF%BD%EF%BF%BDTezs%EF%BF%BD%0C%EF%BF%BD%2C%EF%BF%BD%EF%BF%BD%EF%BF%BD%DD%94%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%19%EF%BF%BD%25%EF%BF%BDt%EF%BF%BDQ%EF%BF%BD%7D%EF%BF%BDF%EF%BF%BD%EF%BF%BD%EF%BF%BD%1An%EF%BF%BD+%EF%BF%BD%CF%86R%EF%BF%BDW%EF%BF%BDU%EF%BF%BDxo%EF%BF%BDd%EF%BF%BD%08-%3F%EF%BF%BD%2F%EF%BF%BD%5Bg%EF%BF%BD2%EF%BF%BD%EF%BF%BDk%5E%EF%BF%BDm%EF%BF%BD%EF%BF%BD%25%EF%BF%BD%EF%BF%BD*%07%5E%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BDU%EF%BF%BD%7F%EF%BF%BDP%EF%BF%BD%EF%BF%BD%EF%BF%BD%7B%07%EF%BF%BDO%EF%BF%BD%EF%BF%BD%11%CB%9C%EF%BF%BD%1Dk%EF%BF%BDkL8%EF%BF%BD*%EF%BF%BD%1D%EF%BF%BDl%EF%BF%BD 02%EF%BF%BD

接收到的数据String服务器端

T#���7��k�A�L�����^"Be�gmE��n�=��܀��IM����eM�5��&�}�NAQ�lT��VXR�i���3U����ep�áb6�εy9x������|!�0����ˏ}�&A����-ލ���t���Tezs��,�φR�W�U�xo�d-?�/�[g�2��k^�m��%��^����U��P���{�O��˜�k�kL8���l���t�q�}�F���n��

(不确定这些字符是实际接收到的,还是控制台上打印得很差?)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-24 08:39:18

您必须先加密它,然后用base64对其进行编码并通过网络发送。否则,加密会产生(Pseuro)随机数据,其中某些部分可能无法正确编码以便通过网络传输,并且不可避免地会被破坏。

如果要压缩数据,同样的情况也是如此。您在加密之前进行压缩,因为加密之后,算法将更难压缩看似随机的数据。

通常,发送到web服务的内容应该作为最后一步/修改进行base64编码。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23842969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档