请教高手:new String(byte).getBytes() 与 byte.clone() 得到的Byte有啥区别

问题描述

在做加密解密时发现将加密后的Byte转成String后再转回Byte 不能正常解密抛出 javax.crypto.IllegalBlockSizeException: Input length must be multiple of 8 when decrypting with padded cipher直接用原加密Byte解密或者Byte.clone()解密正常有谁遇见过这种问题吗是什么原因

解决方案

字符串加密之后得到的二进制串通常意义上已经不是正常的字符串了,如果再编码成字符串的话会丢失信息,举个例子public class Main { public static void main(String[] args)throws Exception { byte[] bytes={(byte)200,(byte)222}; String s = new String(bytes);#丢失信息 System.out.println(s); byte[] b=s.getBytes(); for(int i=0;i<2;i++){ System.out.println(b[i]); }}}结果按理说应该打印出来200和222,但是结果打印出来是-17和-65;所以不把加密之后的二进制串当正常字符串看待,把它们当成整数来处理的话不会丢失信息
解决方案二:
byte在java的有效范围是-128~127。不会打印出200和222的。针对200和222,会打出-56和-34.但是,字符串转码得到-17和-65,应该跟字符集有关。

时间: 2024-09-18 14:31:49

请教高手:new String(byte).getBytes() 与 byte.clone() 得到的Byte有啥区别的相关文章

字符串string和内存流MemoryStream及比特数组byte[]互转

原文:字符串string和内存流MemoryStream及比特数组byte[]互转     字符串string和内存流MemoryStream及比特数组byte[]互转比较 定义string变量为str,内存流变量为ms,比特数组为bt 1.字符串转比特数组(1)byte[] bt=System.Text.Encoding.Default.GetBytes("字符串");(2)byte[] bt=Convert.FromBase64String("字符串"); 2.

诚心请教高手 :使用JDBC更新ORACLE数据

问题描述 程序需求:程序每5分钟,要更新一次数据库里表的数据,每一次要执行38条SQL语句,每一条SQL语句要更新大约16000多个字段,在运行当中出现了这样一个问题,大约运行10个多小时以后,程序就卡死了,程序什么异常都没抛出,控制台也没有异常抛出,诚心请教高手,在这方面有没有更好的解决方案.try{Longstart=System.currentTimeMillis();conn.setAutoCommit(false);stmt=conn.createStatement();//listS

java基础-请教高手,以下代码为何输出false

问题描述 请教高手,以下代码为何输出false public class Test7 { public static void main(String[]args){ Test test1 = new Test("aa"); Object obj = new Test("aa"); System.out.println(test1.equals(obj)); } } class Test{ private String value; public Test(Stri

请教高手关于myeclipse中derby数据库的问题

问题描述 请教高手我用myeclipse6.0新建了一个Java工程TestDerby又用myeclipsedatabaseexplorer在工程TestDerby内建了一个derby数据库DerbyTest并建了一张表但是用工程中的Java代码访问DerbyTest数据库却产生了异常把myeclipse重启一下然后运行,能够运行成功但是用myeclipsedatabaseexplorer连接上Derby数据库,在断开连接后,再运行Java代码,又产生上述异常了不知为什么异常内容如下:Excep

android-小白请教高手问题,今天看了持久化技术的关于一个从文件中读取数据的问题

问题描述 小白请教高手问题,今天看了持久化技术的关于一个从文件中读取数据的问题 想要完成一个功能,向EditText里输入数据,数据存放在一个文件夹后,然后按下back键,再重新启动这个程序,再从这个文件里读取数据,出现的是这个数据已经填充在EditText里 下面是代码 MainActivity import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileInputStream; import

请教高手java问题

问题描述 /***@(#)EditorFrame.java**EditorFrameapplication**@author*@version1.002011/3/19*/importjava.lang.*;importjava.awt.*;importjava.io.*;importjava.awt.datatransfer.*;importjava.awt.event.*;publicclassEditorFrameextendsFrameimplementsActionListenter{

求救-网站服务器被CC攻击,导致cpu高达100%。请教高手解决方法!

问题描述 网站服务器被CC攻击,导致cpu高达100%.请教高手解决方法! 网站服务器被CC攻击,w3pw进程超过25%导致cpu高达100%.请教高手解决方法!

ssh整合-S2SH集成中使用AOP后查询结果为NULL?。。请教高手解答一下

问题描述 S2SH集成中使用AOP后查询结果为NULL?..请教高手解答一下 做SSH集成,用得是spring的声明式事务和hibernate做的集成. 以下是spring配置文件中关于AOP的配置: <!-- 配置aop拦截声明类 --> <bean id = "myAop" class="com.acc.aop.MyAop"></bean> <aop:config> <aop:pointcut express

oracle 数据库用的plsql工具,执行的sql按F5查看cpu耗费,请教高手帮忙解答!

问题描述 oracle 数据库用的plsql工具,执行的sql按F5查看cpu耗费,请教高手帮忙解答! 主要区别在于走索引,走了索引,耗费降低,但是执行速度变慢了,但是不走索引,执行速度变快了,但是耗费上升!请问原因是什么?是不是意味着,耗费越高,执行速度越快吗?还是两者没有必然联系?我们在设计sql时,是要先考虑哪方面? 解决方案 楼主 你知不知道索引的意思? 索引类似书的目录结构,按照索引查找执行速度怎么变慢了呢? 至于耗费和速度的关系就如同你跑步一样的 你费力气点跑,就跑的快一点 你省力气