java - 是否可以对 HEX 进行签名?

标签 java android encryption hex private-key

我正在尝试创建数字签名。当我控制台记录这个签名时,我得到像这样的奇怪字符:

1��N��U]*������gڇ��Xр��ӶhR����1��q

我的 friend 正在制作后端来检查这个数字签名,只是他的签名是十六进制的。他的签名看起来像:

3BFC368C044C932FB62746765A84F3C3ABE7913CC8FDDB32DDF94607D99BE754D8761FAC1E9314B80E1E5EB14D936E137CB44954F245E1D38A6F4FDC80DB00B 5D953DDF0A9E533FADD574F116DDA36AF517217753AA98F284BE946739641EE26933DC8E72B10CAA0D75984D5B1561A3B84815D1BFC9910F2316E0A0773F2CFE9F139D7 C9A5D0CE45256055A63A80BDE6B5DF7F433AFE803E251E7F19964F93F008A7B7AA4A488BD4FB4968AE82D1D6DF6EBB2DA000F6F798808888D040EC84FB285095387EB 8AA9397CB2FAC0248D2D5277386432D99E55AAAD5C3E79048C64713A695B575FD89D3B4218FA784F2116A80B359D4FF62F0391F1EFAC7968DAAA

是否可以在 java 中将签名签名为十六进制?

安卓:

            KeyFactory kf = KeyFactory.getInstance("RSA");
            PrivateKey privKey = kf.generatePrivate(keySpec);
            System.out.println(privKey);
            Signature signer = Signature.getInstance("SHA256withRSA");
            signer.initSign(privKey);
            signer.update(hash.getBytes());
            byte[] signature = signer.sign();
            String encryptHash = new String(signature);

最佳答案

你有一个字节数组,你需要将每个字节转换为它们的十六进制表示,你可以这样做:

byte[] signature = signer.sign();
StringBuilder hexBuilder = new StringBuilder();
for(b: signature){
    hexBuilder.append(String.format("%02x", b));
}
String hexSignature = hexBuilder.toString();

关于java - 是否可以对 HEX 进行签名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56649410/

相关文章:

java - 如何在图表中可视化大量实体?

java - 将文本字段数据添加到列表中。 Swing

encryption - 我应该从哈希值生成 key 以进行加密吗?

python - PyCrypto:使用 RSA 非对称 key 对中文字符进行编码

java - Android - 将嵌套 map 转换为 JSON 字符串

javax.crypto.BadPaddingException :Given final block not properly padded

java - 如何在使用 Autowiring 对象的测试中使用真实函数?

java - 使用 Procrun 从注册为 Windows 服务的 Java 运行批处理文件

java - onBackPressed() 对我不起作用

android - 错误消息 : Field require API Level 11 (current min is 9) : android . os.AsynTask#THREAD_POOL_EXECUTOR