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

2023-12-02

首先很抱歉英语不好。

好吧,我想从 torrent 文件中读取片段哈希信息。目前,我正在使用https://github.com/hyPiRion/java-bencode这个 Bencode 库来解码信息,但我的问题是当我想将片段字符串转换为字节数组时。 torrent 文件以 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


我将二进制数据存储为字符串,因为 .torrent 文件中的 BEncode 格式将该二进制数据存储为字符串

Bencode“字符串”是字节序列,而不是 unicode 代码点序列。因此,语言的字节表示 -byte[] or ByteBuffer在 java 中 - 是合适的,并且仅在某些情况下当它们实际上包含应该是人类可读的内容时才应解释为 utf8 字符串。

因此,您应该使用支持提取原始字节的 bencoding 库。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • 从 Linux 连接到 Neo4j 的问题

    尝试从 java 连接到 Neo4j 时出现以下错误 线程 main 中的异常 java lang RuntimeException 启动时出错 org neo4j kernel EmbeddedGraphDatabase data gra
  • 通过azure函数删除CosmosDB中的文档

    阅读 Azure 门户后 我了解了如何制作POST PUT and GET通过 Azure Functions 与 CosmosDB 进行操作 但是删除 我不明白该怎么做 我应该使用哪些绑定 它应该通过 sql 查询还是集合的方法 如Rem
  • 部署 jsp/servlet Web 应用程序时出现 Jboss 错误“com.sun.faces.config.ConfigureListener”错误

    我正在研究 JSP Servlet 该 Web 应用程序将部署在 Jboss 6 上 我正在使用 Java 1 6 Eclipse 和 Maven2 我没有在代码中的任何地方引用 JSF 我的项目在任何地方都没有涉及 JSF 但是当我尝试部
  • 有人可以向我解释以下代码吗?

    我正在阅读 Rails 3 in Action 一书 它正在讨论覆盖to s在模型中 代码如下 def to s email admin Admin User end 我知道在 Ruby 中你可以通过以下方式在双引号内显示 一个值 valu
  • JavaScript 中返回多个值?

    我试图返回两个值JavaScript 这可能吗 var newCodes function var dCodes fg codecsCodes rs var dCodes2 fg codecsCodes2 rs return dCodes
  • 安装 ruby​​ 1.9.3 时出错

    我正在尝试使用 rvm 安装 Ruby 1 9 3 但是 当我输入 rvm install 1 9 3 我收到以下错误 ERROR Error running make please read Users nick rvm log ruby
  • ThreeJS:3D 对象面积计算(三角测量)

    我需要在 ThreeJS 中计算整个对象的面积 表面积 这就是我所拥有的 var len object geometry faces length area 0 0 if len return 0 0 for var i 0 i lt le
  • Jackson注释中的多态性:@JsonTypeInfo用法

    我想知道是否 JsonTypeInfo注解可以用于接口 我有一组应该序列化和反序列化的类 这就是我正在尝试做的事情 我有两个实现类Sub1 Sub2实施MyInt 一些模型类具有实现类型的接口引用 我想基于多态性反序列化对象 JsonTyp
  • 在 Flash 中播放 MIDI 文件

    有没有办法在Flash中播放MIDI文件 使用动作脚本 3 None
  • 眼睛空间坐标到底是什么?

    当我学习 OpenGL 时 我经常偶然发现所谓的眼空间坐标 如果我是对的 你通常有三个矩阵 模型矩阵 视图矩阵和投影矩阵 虽然我不完全确定其背后的数学原理是如何工作的 但我确实知道将坐标转换为世界空间 视图空间和屏幕空间 但是眼睛空间在哪里
  • Git 提交消息:50/72 格式

    Tim Pope 在他的博文中主张采用特定的 Git 提交消息样式 http www tpope net node 106 以下是他的建议的快速摘要 第一行不超过 50 个字符 然后是一个空行 剩余文本应以 72 个字符换行 他的博客文章给
  • QFile 打开文件写入失败

    我正在尝试打开文件并向其中写入一些文本数据 QFile out test txt if out open QIODevice ReadWrite QMessageBox msgBox msgBox setText out errorStri
  • Python virtualenv 问题

    我在 Windows XP 上使用 VirtualEnv 我想知道我的大脑是否正确地围绕它 I ran virtualenv ENV它创造了C WINDOWS system32 ENV 然后我改变了我的PATH要包含的变量C WINDOWS
  • 矩阵的块对角绑定

    R 是否具有将矩阵绑定为块对角形状的基函数 以下可以完成这项工作 但我想知道是否有标准方法 a lt matrix 1 6 2 3 b lt matrix 7 10 2 2 rbind cbind a matrix 0 nrow nrow
  • 复制包含索引的表

    有没有办法在 SQL Server 中复制表 不仅仅是像这样的数据SELECT INTO还可以索引 也许还有键 如果我走脚本表为 gt 创建到它遗漏了我的索引 如果此功能不可用 为什么不呢 我确信这个问题肯定被问了 1000 次 但我找不到
  • 关于C中的qsort(),** buf和buf[][]的区别

    当我在 Mac 上的 C 语言中使用 qsort 时 这些代码运行良好 它可以很好地对一个文件中的每一行进行排序 int compare const void p const void q return strcmp p q void fu
  • 如何在jtree中仅列出非隐藏和非系统文件

    File f new File C File fList f listFiles 当我使用它时 它会列出所有系统文件以及隐藏文件 而这个原因空指针异常当我用它在 jTree 中显示时 如下所示 public void getList Def
  • 从所有浏览器注销用户

    我在用着表单验证mechanizm 和 auth 用户通过 FormsAuthentication SetAuthCookie Can I logout当前用户来自所有浏览器不知何故 在认证参数中添加一个guid参数 还将 guid 保存到
  • 动态CRM插件下载Word文档

    我创建了 CRM 插件 在创建案例时需要将文档下载到客户端 当我创建案例时 插件正在工作 但它不下载文档 在控制台中我可以看到通过 POST 请求返回文档内容 AppWebServices InlineEditWebService asmx
  • 如何将从 sha1 字节数组生成的字符串返回到该字节数组?

    首先很抱歉英语不好 好吧 我想从 torrent 文件中读取片段哈希信息 目前 我正在使用https github com hyPiRion java bencode这个 Bencode 库来解码信息 但我的问题是当我想将片段字符串转换为字