String.getBytes("UTF-16") 在所有平台上都会返回相同的结果吗?

2023-11-25

我需要从包含用户密码的字符串创建哈希。为了创建哈希,我使用通过调用获得的字节数组String.getBytes()。但是,当我在不是默认编码的平台上使用指定编码(例如 UTF-8)调用此方法时,非 ASCII 字符会被默认字符替换(如果我正确理解 getBytes() 的行为) )因此在这样的平台上,我将得到一个不同的字节数组,并最终得到一个不同的哈希值。

由于字符串内部存储为 UTF-16,因此将调用String.getBytes("UTF-16")保证我在每个平台上都能得到相同的字节数组,无论其默认编码如何?


是的。不仅保证它是 UTF-16,而且字节顺序也被定义:

解码时,UTF-16 字符集解释输入流开头的字节顺序标记来指示流的字节顺序,但如果没有字节顺序标记,则默认为 big-endian;编码时采用big-endian字节顺序,并写入big-endian字节顺序标记。

(当调用者没有要求时,BOM 不相关,因此String.getBytes(...)不会包括它。)

只要你有相同的字符串内容 - 即相同的序列char值 - 那么你将在 Java 的每个实现上获得相同的字节,除非出现错误。 (考虑到 UTF-16 可能是 Java 中实现的最简单的编码,任何此类错误都会非常令人惊讶......)

事实上 UTF-16 是char(并且通常对于String然而,仅在易于实施方面相关。例如,我会also expect String.getBytes("UTF-8")在每个平台上给出相同的结果。

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

String.getBytes("UTF-16") 在所有平台上都会返回相同的结果吗? 的相关文章

  • AES 加密 Java/plsql

    我需要在Java和plsql DBMS CRYPTO for Oracle 10g 上实现相同的加密 解密应用程序 两种实现都工作正常 但这里的问题是我对相同纯文本的加密得到了不同的输出 下面是用于加密 解密过程的代码 Java 和 PLS
  • 线程自动利用多个CPU核心?

    假设我的应用程序运行 2 个线程 例如渲染线程和游戏更新线程 如果它在具有多核 CPU 当今典型 的移动设备上运行 我是否可以期望线程在可能的情况下自动分配给不同的核心 我知道底层操作系统内核 Android linux内核 决定调度 我的
  • 解决错误:日志已在具有多个实例的atomikos中使用

    我仅在使用atomikos的实时服务器上遇到问题 在我的本地服务器上它工作得很好 我在服务器上面临的问题是 init 中出错 日志已在使用中 完整的异常堆栈跟踪 java lang RuntimeException Log already
  • IntelliJ IDEA 创建的 JAR 文件无法运行

    我在 IntelliJ 中编写了一个跨越几个类的程序 当我在 IDE 中测试它时它运行良好 但是 每当我按照教程将项目制作成 jar 可执行文件时 它就不会运行 双击 out 文件夹中的文件时 该文件不会运行 并显示 无法启动 Java J
  • 当分配给变量时,我可以以某种方式重用 Gremlin GraphTraversals 代码吗?

    我有看起来像这样的 GraphTraversals attrGroup GraphTraversal
  • Java 页面爬行和解析之 Crawler4j 与 Jsoup

    我想获取页面的内容并提取其中的特定部分 据我所知 此类任务至少有两种解决方案 爬虫4j https github com yasserg crawler4j and Jsoup http jsoup org 它们都能够检索页面的内容并提取其
  • hibernate总是自己删除表中的所有数据

    您好 我正在开发一个 spring mvc 应用程序 它使用 hibernate 连接到存储文件的 mysql 数据库 我有两个方法 一个方法添加我选择的特定文件路径中的所有文件 另一种方法调用查询以返回从 mysql 存储的文件列表 问题
  • 请求位置更新参数

    这就是 requestLocationUpdates 的样子 我使用它的方式 requestLocationUpdates String provider long minTime float minDistance LocationLis
  • 归并排序中的递归:两次递归调用

    private void mergesort int low int high line 1 if low lt high line 2 int middle low high 2 line 3 mergesort low middle l
  • 检查 protobuf 消息 - 如何按名称获取字段值?

    我似乎无法找到一种方法来验证 protobuf 消息中字段的值 而无需显式调用其 getter 我看到周围的例子使用Descriptors FieldDescriptor实例到达消息映射内部 但它们要么基于迭代器 要么由字段号驱动 一旦我有
  • org.jdesktop.application 包不存在

    几天以来我一直在构建一个 Java 桌面应用程序 一切都很顺利 但是今天 当我打开Netbeans并编译文件时 出现以下编译错误 Compiling 9 source files to C Documents and Settings Ad
  • T-SQL:如何获取字符串的确切字符长度?

    我正在为预先没有数据类型信息的表生成 T SQL SELECT 语句 在这些语句中 我需要执行取决于表列的原始值的长度的字符串操作操作 一个示例 但不是唯一的示例 是在字符串中的特定位置插入一些文本 包括将其插入末尾的选项 SELECT C
  • Java中未绑定通配符泛型的用途和要点是什么?

    我不明白未绑定通配符泛型有什么用 具有上限的绑定通配符泛型 stuff for Object item stuff System out println item Since PrintStream println 可以处理所有引用类型 通
  • 应用程序关闭时的倒计时问题

    我制作了一个 CountDownTimer 代码 我希望 CountDownTimer 在完成时重新启动 即使应用程序已关闭 但它仅在应用程序正在运行或重新启动应用程序时重新启动 因此 如果我在倒计时为 00 10 分钟 秒 时关闭应用程序
  • Tomcat 6找不到mysql驱动

    这里有一个类似的问题 但关于类路径 ClassNotFoundException com mysql jdbc Driver https stackoverflow com questions 1585811 classnotfoundex
  • 当单元格内的 JComboBox 中有 ItemEvent 时,如何获取 CellRow

    我有一个 JTable 其中有一列包含 JComboBox 我有一个附加到 JComboBox 的 ItemListener 它会根据任何更改进行操作 但是 ItemListener 没有获取更改的 ComboBox 所在行的方法 当组合框
  • Keycloak - 自定义 SPI 未出现在列表中

    我为我的 keycloak 服务器制作了一个自定义 SPI 现在我必须在管理控制台上配置它 我将 SPI 添加为模块 并手动安装 因此我将其放在 module package name main 中 并包含 module xml 我还将其放
  • java迭代器内部是如何工作的? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个员工列表 List
  • JAVA - 如何从扫描仪读取文件中检测到“\n”字符

    第一次海报 我在读取文本文件的扫描仪中读取返回字符时遇到问题 正在读取的文本文件如下所示 test txt start 2 0 30 30 1 1 90 30 0 test txt end 第一行 2 表示两个点 第二行 位置索引 0 xp
  • Jackson 将单个项目反序列化到列表中

    我正在尝试使用一项服务 该服务为我提供了一个带有数组字段的实体 id 23233 items name item 1 name item 2 但是 当数组包含单个项目时 将返回该项目本身 而不是包含一个元素的数组 id 43567 item

随机推荐

  • 在 setTimeout 中使用 JavaScript 闭包

    我使用 setTimeout 来模拟渲染 我得到这样的结构 var Renderer new Class Implements Events initialize this onRender onRender function some r
  • k近邻算法中k的值

    我有 7 个类需要分类 我有 10 个特征 在这种情况下 我需要使用 k 的最佳值吗 或者我是否必须针对 1 到 10 大约 10 之间的 k 值运行 KNN 并在算法本身的帮助下确定最佳值 此外文章我在评论里发帖有this one这也表明
  • 如何从控制台读取空格分隔的数字?

    我正在尝试执行一项简单的任务 将控制台中的空格分隔的数字读取到vector
  • WPF 组合框:文本框和下拉列表中的不同模板

    这是我的组合框
  • 类型错误:列表索引必须是整数或切片,而不是 str

    我有两个列表 我想将它们合并到一个数组中 最后将其放入 csv 文件中 我如何避免这个错误 def fill csv self array urls array dates csv file path result array array
  • MongoDB中的日期:将Date对象插入Mongo数据库时,日期变得比本身早1天

    我的日期字符串格式是这样的 2012 年 1 月 2 日在Instant parse 方法之后 instant实例的日期变成了2012年1月1日 提前了1天 为什么呢 如果原始日期字符串是 jan 1 2012 则即时日期将为 2011 年
  • Clojure中doseq和for的区别

    Clojure 中的 doseq 和 for 有什么区别 有哪些例子可以说明您何时会选择使用其中一种而不是另一种 不同之处在于for构建一个惰性序列并返回它doseq用于执行副作用并返回 nil user gt for x 1 2 3 x
  • 环境不一致,请仔细查看套餐方案

    我尝试从 anaconda 更新或安装新软件包 最近出现了此消息 The environment is inconsistent please check the package plan carefully The following p
  • 检查属性是否有属性

    给定类中具有属性的属性 确定它是否包含给定属性的最快方法是什么 例如 IsNotNullable IsPK IsIdentity SequenceNameAttribute Id public Int32 Id get return Id
  • 我想我可以通过 Javascript 检测浏览器本身内部的 Tor 浏览器吗?

    如果浏览器是 Tor 浏览器 我想禁用我正在构建的网络应用程序的某些功能 我可以在浏览器本身 客户端 而不是服务器端 内部查明浏览器是否是 Tor 浏览器 我更喜欢一个不发出任何 HTTP 请求来将浏览器的 IP 与 Tor 出口节点进行匹
  • 使用 javascript 和 PhoneGap 的 HTML5 移动应用本地化

    我正在创建一个在所有 3 个移动平台 Android iOS 和 Windows Mobile 8 上运行的 HTML5 移动应用程序 我正在使用 javascript 进行本地化 https github com eligrey l10n
  • 如何在 Swift 中显示来自另一个类的警报?

    我有一个主课 AddFriendsController 运行以下代码行 ErrorReporting showMessage Error msg Could not add student to storage 然后我有这个ErrorRep
  • 从 python 中的列表中获取唯一值[重复]

    这个问题在这里已经有答案了 我想从以下列表中获取唯一值 nowplaying PBS PBS nowplaying job debate thenandnow 我需要的输出是 nowplaying PBS job debate thenan
  • 在python中通过调制解调器发送wav声音

    我正在尝试用 python 和 linux 制作一个自动应答和呼叫机 但到目前为止我只能拨打一个号码 当谈到发送声音或录制声音时 我没有成功 过去一周我一直在努力解决这个问题 到目前为止还找不到解决的方法 我使用的调制解调器是 Conexa
  • 可以嵌套
    吗?

    在 asp net 网页的内容页中 我想包含 paypal 按钮 立即付款 所以 我有一个母版页和一个内容页 在我的内容页面中 我复制粘贴贝宝代码 特别是 我使用 modalpopupextender 来允许我的用户购买该对象 问题是 它不
  • 了解 JAX-WS 中的 @Oneway 注释

    根据 javadoc 指示给定的 WebMethod 只有输入消息而没有输出 通常 单向方法在执行实际业务方法之前将控制线程返回给调用应用程序 如果标记为 Oneway 的操作具有返回值或 Holder 参数 或者声明任何已检查异常 181
  • UPDATE SET 中的子查询 (sql server 2005)

    我有一个关于在 Update 语句中使用子查询的问题 我的例子 UPDATE TRIPS SET locations city FROM select Distinct city from poi where poi trip guid t
  • Qt中如何从主窗口打开一个新窗口?

    我是 qt 编程新手 想知道如何在主窗口消失的情况下从主窗口打开一个新窗口 有没有源代码我可以看一下 从主窗口中的插槽调用以下代码 QWidget wdg new QWidget wdg gt show hide this will dis
  • 将字典保存到 UserDefaults

    我试图在 UserDefaults 中存储字典 并且在代码运行时总是导致应用程序崩溃 以下是执行时导致应用程序崩溃的示例代码 我尝试将其转换为 NSDictionary 或最初将其设为 NSDictionary 得到了相同的结果 class
  • String.getBytes("UTF-16") 在所有平台上都会返回相同的结果吗?

    我需要从包含用户密码的字符串创建哈希 为了创建哈希 我使用通过调用获得的字节数组String getBytes 但是 当我在不是默认编码的平台上使用指定编码 例如 UTF 8 调用此方法时 非 ASCII 字符会被默认字符替换 如果我正确理