当前位置: 首页 > 面试题库 >

如何将从sha1字节数组生成的字符串返回到该字节数组?

潘彦
2023-03-14
问题内容

首先,对英语不好对不起。

好吧,我想从torrent文件中读取散列信息。目前,我正在使用https://github.com/hyPiRion/java-
bencode
这个bencode库来解码信息,但是我的问题是当我想将字符串转换为字节数组时。种子文件使用UTF-8编码。但是如果我这样做

 Byte[] bytepieces = piecestring.getBytes("UTF-8");

很好。任何真正有用的东西。

另一方面,为了比较或尝试获取字符串,而不是获取字节,我已经阅读了文件的第一部分,并计算了sha1。如果将sha1的大小为20的字节数组有效地转换为字符串,则该字符串与大块字符串的第一部分匹配…但是,如果我尝试将生成的字符串返回到20个原始字节创造了它…我做不到…该怎么做?

小例子:

FileInputStream fin = new FileInputStream("miFile");
byte[] array = new Byte[512*1024]; //a piece of 512 kb
fin.read(array,0,512*1024);
MessageDigest md = MessageDigest.getInstanse ("SHA);
Byte [ sha1byte = md.digest(array);
String s = new String(sha1byte,"UTF-8");

完成此操作后,sha1byte.length为20,并且确定为sha1哈希的正确大小。但是,如果我 s.getBytes("UTF-8").length, in the case of my example i got... ¡33! ¡wuuut!要从生成的字符串中再次获取我的20个数组。我怎么能得到这个?

好,谢谢:P


问题答案:

谢谢您的回答,但我可以使用此https://github.com/bedeho/bencodej找到解决方案

lib将Bencode数据alwais加载为带有自定义类的字节数组,并且可以将字节串1:1与:p一起感谢。



 类似资料:
  • 问题内容: 我试图理解一个到字符串,一个的字符串表示形式到转换…我将我的转换成一个要发送的字符串,然后我希望我的Web服务(用python编写)将数据直接回显给客户端。 当我从Java应用程序发送数据时… 字节发送.. 发送(这是Arrays.toString()的结果,它应该是我的字节数据的字符串表示形式,该数据将通过电线发送): 在python端,python服务器将字符串返回给调用方(我可以

  • 我有一个字符串,它包含字节数组的元素,比如“[B@42B19E58”,我必须将它转换回字节数组。 有人能给我一个这样做的方法吗? 在这里,我不必将一个字符串转换为字节数组。我已经有字节数组元素在字符串中,我只需要把它们放回数组。

  • 问题内容: 在下面的: 为什么将-127转换为63?以及如何将其恢复为-127 [编辑:]下面的Java版本(表明它不仅是“ Scala问题”) 问题答案: 您正在调用的构造函数使得二进制到字符串的转换使用解码:变得很明显。您想要的是根本不使用解码。 幸运的是,有一个构造函数:。 现在,您将数据存储在一个字符串中,但是您希望完全照原样返回它。但猜猜怎么了! 没错,还会自动应用一种编码。幸运的是,有

  • 问题内容: 是否可以将字符串转换为字节数组,然后在Java或Android中将其转换回原始字符串? 我的目标是将一些字符串发送到微控制器(Arduino)并将其存储到EEPROM(仅1 KB)中。我尝试使用MD5哈希,但它似乎只是一种单向加密。我该怎么办? 问题答案: 我建议使用字符串的成员,但 使用显式编码 : 通过使用一种显式编码(以及一种支持所有Unicode的编码),您可以避免仅调用等问题

  • 我从这里使用解决方案: 问题是当我这样做时: 我得到一个非常奇怪的字符串,类似于,但我想要一个可以保存在DB中的普通字符串。我错在哪里?

  • 我得到一个错误读数: