Generating a base64 encoded hash from CLI to match Java(从 CLI 生成 base64 编码哈希以匹配 Java)
问题描述
我有一个 java 代码库,可以从字符串生成 URL 安全的 base64 编码哈希,我想知道这是否/如何使用 linux 命令行工具实现.我猜我在这里所做的问题与字符集/编码有关,或者与将字符串转换为字节数组有关.Java 代码:
I have a java code base that generates an URL safe base64 encoded hash from a string, and wondering if / how this would be possible with linux command line tools. I'm guessing the problem with what I am doing here is with the character set / encoding or to do with converting the string to a byte array. Java code:
MessageDigest md = MessageDigest.getInstance("SHA-256");
byte[] digest = md.digest("testString".getBytes());
// ^^ this is where the difference is?
String b64url = Base64.encodeBase64URLSafeString(digest);
// b64url: Ss8LOdnEdmcJo2ifVTrAGrVQVF_6RUTfwLLOqC-6AqM
命令行:
echo testString | sha256sum | cut -d" " -f1 | base64
# NDgxOGEyY2JkODYwOTY1NjJkODFmYzIwNmQ3ZTYyNWVlNGFjMTU5MmViNTc0MjQwMDQ4OTIzOTBl
# MDQzZTNlYwo=
是否可以通过cli工具生成base64编码的sha256?
Is it possible to generate base64 encoded sha256 via cli tools?
推荐答案
你是base64编码一个十六进制字符串,而不是hash的字节值,相当于:
You're base64 encoding a hexadecimal string, not the byte values of the hash, which is the equivalent of:
MessageDigest md = MessageDigest.getInstance("SHA-256");
byte[] digest = md.digest("testString".getBytes()); // Missing charset
String hex = Hex.encodeHexString(digest);
String base64 = Base64.encodeBase64(hex.getBytes());
这篇关于从 CLI 生成 base64 编码哈希以匹配 Java的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:从 CLI 生成 base64 编码哈希以匹配 Java
基础教程推荐
- RabbitMQ:消息保持“未确认"; 2022-01-01
- 如何对 Java Hashmap 中的值求和 2022-01-01
- 使用堆栈算法进行括号/括号匹配 2022-01-01
- 问题http://apache.org/xml/features/xinclude测试日志4j 2 2022-01-01
- 存储 20 位数字的数据类型 2022-01-01
- Struts2 URL 无法访问 2022-01-01
- 修改 void 函数的输入参数,然后读取 2022-01-01
- 无法复制:“比较方法违反了它的一般约定!" 2022-01-01
- REST Web 服务返回 415 - 不支持的媒体类型 2022-01-01
- Spring AOP错误无法懒惰地为此建议构建thisJoinPoin 2022-09-13
