如何将从 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 字节数组生成的字符串返回到该字节数组? 的相关文章

  • 如何注入“运行时”依赖项,例如登录用户,该依赖项在应用程序启动时不可用?

    我只是不明白这个 我在我的 java GWT 应用程序中使用 Gin 来进行 DI 登录屏幕集成到完整的应用程序窗口中 用户登录后 我想将用户对象注入到我创建的其他类 例如 GUI Presenters 中 因此我相信存在某种运行时依赖性
  • 在 libgdx 中批处理多维数据集时出现问题

    我正在尝试开发一款游戏 在屏幕上渲染多达 300 个立方体 为每个多维数据集创建新的 modelInstance 时 modelBatch 的性能非常糟糕 据我所知 没有 3d 批处理可以将所有立方体批处理到一次绘制调用 所以我拼命地尝试以
  • 为什么连接器没有使用我的 Tomcat 6 执行程序线程池?

    我的 server xml 如下所示
  • 检查两个日期周期是否重叠[重复]

    这个问题在这里已经有答案了 我有两个日期范围 start1 end1 gt gt date1 start2 end2 gt gt date2 我想检查两个日期是否重叠 我的流程图我假设 运算符对于比较是有效的 boolean isOverL
  • Spring MVC 和 Struts MVC 之间的区别 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 Spring MVC 和 Struts MVC 之间的主要区别是什么 Spring MVC 和 Struts 之间的主要区别是 Spr
  • java中的散列是如何工作的?

    我正在尝试弄清楚java中的哈希值 例如 如果我想在哈希图中存储一些数据 它是否会有某种带有哈希值的底层哈希表 或者 如果有人能够对哈希的工作原理给出一个很好且简单的解释 我将非常感激 HashMap 基本上在内部实现为数组Entry 如果
  • 获取文本文件中行的字节偏移量?

    我有一个文本文件 例如 one two three four five 我需要获取文件中每一行的偏移量 我如何在 Java 中做到这一点 我搜索了一些 I O 库 如 BufferedReader 和 RandomAccessFile 但我
  • Java TCP Echo 服务器 - 广播

    我有一个简单的回显服务器 我希望当连接的用户向服务器键入任何内容时 所有其他客户端和该客户端都会收到消息 MOD 它现在不会发送给所有客户端 但它应该发送 而且我只是不知道我的代码出了什么问题 所以现在它只会将消息 MOD 发送给发送消息的
  • 控制启动时的竞争条件

    我有一些代码想要执行一些一次性初始化 但这段代码没有明确的生命周期 因此在初始化完成之前 我的逻辑可能会被多个线程调用 所以 我想基本上确保我的逻辑代码 等待 直到初始化完成 这是我的第一次剪辑 public class MyClass p
  • 如何使用 Java 文档 API 为 OrientDB 数据库创建自动递增索引/序列?

    我通过其文档 API 将 OrientDB 与 Java 结合使用 我有一个简单的类叫做items它有一个属性ID 我明确声明架构如下 OSchema schema db getMetadata getSchema OClass items
  • 不带破折号的 CliBuilder 参数

    使用 Groovy CliBuilder 理想情况下我希望有一个命令行 如下所示 MyProgram groovy CommandName arg1 arg2 arg3 是否可以使用 CliBuilder 解析提取 CommandName
  • 在字节数组上进行右位旋转/循环移位的最快方法是什么

    如果我有数组 01101111 11110000 00001111 111 240 15 移位 1 位的结果是 10110111 11111000 00000111 183 248 7 数组大小不固定 移位范围为 1 到 7 含 目前我有以
  • 在 XSSF 工作簿上设置密码保护

    我想为使用 poi 3 14 创建的 xlsx 文件添加密码保护 该文档声称 这是可能的 http poi apache org cryption html http poi apache org encryption html 使用我尝试
  • CompletableFuture SupplyAsync

    我刚刚开始探索 Java 8 的一些并发特性 让我有点困惑的一件事是这两个静态方法 CompletableFuture
  • 为什么我在 Java 中收到有关“可能丢失精度”的警告?

    class Test public static void main String args short s 2 s1 200 s2 s2 s s1 error possible loss of precision System out p
  • 尝试用Java实现基于文本的Hangman游戏

    我需要检查用户输入的字母以及他们猜测的空格是否位于隐藏单词的特定位置 变量one等于用户猜测的空间索引 而letterGuess是他们猜测的字母 我的代码怎么错了 示例 秘密词是你好 hidden word is 用户猜测h 0 1 2 3
  • 枚举

    我试图拥有一组扩展通用接口的枚举 例如 interface Fooable void someCommonMethod enum E1 implements Fooable some enumuerations and a definiti
  • 解析整数集的字符串并列出间隔

    I have 2 5 7 9 12 string 我想从中获取 2 5 7 8 9 12 列表 python中有没有内置的函数 Thanks UPD 我想 直接的答案是No 不管怎样 谢谢你的 片段 使用一个 建议者斯文 马尔纳克 s 2
  • 确保 MAVEN_HOME 设置正确

    这里是 Java 和 Maven 菜鸟 使用 OSX 10 8 并使用 HomeBrew 安装 Maven 1 如果我说which mvn我会得到这个 usr local bin mvn 2 如果我说echo MAVEN HOME我不会得到
  • Java编程编译jar

    我有一个文本文件中的java源代码 必须在源代码中输入一些自定义的硬编码变量 然后将其转换为 jar 这是可行的 但是当我运行 jar 时 找不到 Main 类 当我用 WinRAR 解压 jar 文件时 我似乎找不到错误 当我通过 cmd

随机推荐

  • 从 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 库来解码信息 但我的问题是当我想将片段字符串转换为字