Tag: sha256

因为签名的jar文件的时间戳支持哪个java版本SHA-256和SHA256withRSA

我在jar文件的签名中有以下条目 Timestamped by “CN=GlobalSign TSA for Advanced – G3 – 001-02, O=GMO GlobalSign KK, C=JP” on Mo Apr 10 11:48:34 UTC 2017 Timestamp digest algorithm: SHA-256 Timestamp signature algorithm: SHA256withRSA, 2048-bit key 我已经发现时间戳消息algoirthm上的SHA-256和时间戳签名算法中的SHA256withRSA在java版本低于1.7.0_76的系统上运行jar文件时会导致问题(jar文件被标记为无符号)。 有人可以告诉我时间戳摘要和时间戳签名支持这两种算法的Java版本吗?

带有密钥的Java HmacSHA256

我已经尝试了一些来自stackoverflow的链接来获取HmacSHA256的密钥以使用java,但我总是得到 func check(body: String) -> String { let hash = body.hmac(HMACAlgorithm.sha256, key: Router.sigKey) print(“SIG: ” + Router.sigKey) print(“result of hash. \(hash)”) return hash } 此函数返回带有给定String的键的哈希值。 关键是:0393e944ee8108bb66fc9fa4f99f9c862481e9e0519e18232ba61b0767eee8c6 字符串是:示例 结果是:27effb76c97022497e25d3a5d7e823462f212a82d9ebba35f179071568b0c335 当我使用这个网站检查我的SHA256是否使用相同的密钥时,它返回相同的答案,所以我知道我在swift中的代码是好的。 但是当我尝试在java中执行此操作时,这里是源代码。 public static String HMAC_SHA(){ try { String secret = “0393e944ee8108bb66fc9fa4f99f9c862481e9e0519e18232ba61b0767eee8c6”; String message = “example”; Mac sha256_HMAC = Mac.getInstance(“HmacSHA256”); SecretKeySpec secret_key = new SecretKeySpec(secret.getBytes(), “HmacSHA256”); sha256_HMAC.init(secret_key); […]

Shopify oauth中的HMAC-SHA256问题(输出不匹配)

我正在尝试按照此文档在Shopify市场上发布应用程序。 而且我坚持在oauth文档的第3步,你必须做’HMAC签名validation’。 文档说明您必须使用应用程序的共享密钥通过HMAC-SHA256处理字符串(在下面指定)。 String = “shop=some-shop.myshopify.com&timestamp=1337178173” 我正在尝试使用Java实现这些步骤。 以下是我使用的代码的要点。 private static final String HMAC_ALGORITHM = “HmacSHA256”; String key = “hush”; String data = “shop=some-shop.myshopify.com&timestamp=1337178173”; SecretKeySpec keySpec = new SecretKeySpec(key.getBytes(),HMAC_ALGORITHM); Mac mac = Mac.getInstance(HMAC_ALGORITHM); mac.init(keySpec); byte[] rawHmac = mac.doFinal(data.getBytes()); System.out.println(Hex.encodeHexString(rawHmac)); 代码生成以下字符串: c2812f39f84c32c2edaded339a1388abc9829babf351b684ab797f04cd94d4c7 通过Shopify开发者论坛上的一些随机搜索,我找到了一个问题的链接。 来自@Shayne的最后一条消息表明我们必须通过添加protocol字段来更改data变量。 但它没有成功:( 谁能告诉我应该做什么?我是否必须在我的代码中进行修改或者文档中的过程已经改变。 请帮忙。

用两个参数散列“SHA256”

我必须转换一个哈希字符串的JAVA函数。 这是一个function: private static String hmacSha256(String value, String key) throws NoSuchAlgorithmException, InvalidKeyException { byte[] keyBytes = key.getBytes(); SecretKeySpec signingKey = new SecretKeySpec(keyBytes, “HmacSHA256”); Mac mac = Mac.getInstance(“HmacSHA256”); mac.init(signingKey); byte[] rawHmac = mac.doFinal(value.getBytes()); return String.format(“%0” + (rawHmac.length << 1) + "x", new BigInteger(1, rawHmac)); } 我的疑问是:这个函数有2个参数: 字符串值:它是crypt的字符串 字符串键:这是另一个关键 我已经使用过Sha256,但我总是只使用一个参数(一个字符串加密) 请问,我怎样才能在c#中编写这个函数,或者有没有人可以向我解释逻辑? 谢谢

将SHA256从Java转换为C#

我有一个简单的问题。 我需要将一个sha256校验和方法从java重写为C# 所以我有这个Java鳕鱼可以使用: Canonicalizer c14Canonicalizer = Canonicalizer.getInstance(Canonicalizer.ALGO_ID_C14N_EXCL_WITH_COMMENTS); byte[] byteArray = c14Canonicalizer.canonicalizeSubtree(doc); // At this point, the byteArray in Java and the data in C# matches up. // That is, after the java bytes are converted to unsigned bytes using // java.lang.Byte.toUnsignedInt() MessageDigest md = MessageDigest.getInstance(“SHA-256”); md.update(byteArray); byte byteData[] = md.digest(); (byteArray是,你猜对了,一个字节数组:D) 根据我的发现,update()和digest()方法应该基本上替代相应的HashAlgorithm派生类(在本例中为SHA256)中的TransformBlock()和TransformFinalBlock()方法。 所以我在C#中尝试过类似的东西: var data […]

PHP HMAC SHA256哈希

我试图重建从Java到PHP的脚本 通常在php中我们做hash_mac(’sha256’,string,key)但是php中生成的签名与java不匹配… 这是java算法: Mac localMac = getValidMac(); localMac.init(new SecretKeySpec(str1.getBytes(“UTF-8”), localMac.getAlgorithm())); byte[] arrayOfByte = localMac.doFinal(paramString.getBytes()); BigInteger localBigInteger = new BigInteger(1, arrayOfByte); String str4 = String.format(“%0” + (arrayOfByte.length << 1) + "x", new Object[] { localBigInteger }); str3 = str4; return str3; Java中是否有任何不同的东西在键上添加一些字符串?

迭代散列在Python和Java中返回不同的值

我正在尝试将python(2.7)脚本移植到Java。 它多次迭代sha256哈希,但最终会得到不同的结果。 我注意到他们第一次返回相同的结果,但从那里它就不同了。 这是Python实现: import hashlib def to_hex(s): print ” “.join(hex(ord(i)) for i in s) d = hashlib.sha256() print “Entry:” r = chr(1) to_hex(r) for i in range(2): print “Loop”, i d.update(r) r = d.digest() to_hex(r) 在Java中: import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class LoopTest { public static void main(String[] args) { MessageDigest d; try { […]

PHP和Java中的SHA256

我正在将一些Java代码移植到PHP代码中。 在Java中,我有一个哈希SHA256代码,如下所示: public static String hashSHA256(String input) throws NoSuchAlgorithmException { MessageDigest mDigest = MessageDigest.getInstance(“SHA-256”); byte[] shaByteArr = mDigest.digest(input.getBytes(Charset.forName(“UTF-8”))); StringBuilder hexStrBuilder = new StringBuilder(); for (int i = 0; i < shaByteArr.length; i++) { hexStrBuilder.append(Integer.toHexString(0xFF & shaByteArr[i])); } return hexStrBuilder.toString(); } 在PHP中,我哈希如下: $hash = hash(“sha256”, utf8_encode($input)); 我用input =“test”运行示例代码。 但是,我得到了2个不同的哈希字符串: Java: 9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2bb822cd15d6c15b0f0a8 PHP: 9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08 有人可以向我解释为什么以及如何让它们相互匹配? 请注意,我无法修改Java实现代码,只能修改PHP。 万分感激!

Android(Java)方法相当于Hex中的Python HMAC-SHA256

我试图在Android(Java)中复制Python HMAC-SHA256等价物。 下面显示了Python表示的正确输出: python print (hmac.new(key = binascii.unhexlify(“0123465789”),msg = binascii.unhexlify(“ABCDEF”),digestmod=hashlib.sha256).hexdigest()).upper() Output 5B5EE08A20DDD645A31384E51AC581A4551E9BE5AC8BF7E690A5527F2B9372CB 但是,我无法使用以下代码在Java中获得相同的输出: Java的 Mac sha256_HMAC = Mac.getInstance(“HmacSHA256”); SecretKeySpec secretKey = new SecretKeySpec(“0123465789”.getBytes(“UTF-8”), “HmacSHA256”); sha256_HMAC.init(secretKey); byte[] hash = sha256_HMAC.doFinal(“ABCDEF”.getBytes(“UTF-8”)); String check = (new String(Hex.encodeHex(hash))).toUpperCase(); System.out.println(check); Output 46F9FD56BDAE29A803BAD5BC668CB78DA4C54A51E6C031FB3BC2C42855047213 我相当肯定我的问题是没有编写Python的Java代码: key = binascii.unhexlify(“0123465789”) & msg = binascii.unhexlify(“ABCDEF”) 这是因为当我不在Python中对Hex-String输入执行binascii.unhexlify时,我为这两种方法呈现相同的结果。 但是,Python HMAC-SHA256需要binascii.unhexlify操作。 我已经做了很多研究甚至尝试导入Python用于在Java中执行binascii.unhexlify的方法,但我仍然无法生成相同的结果。 在解决此问题时,任何帮助和/或建议都将不胜感激。 有人可以帮帮我吗?

使用MessageDigest SHA-256的POI XSSF / XLSX散列不确定性

使用MessageDigest SHA-256实现获得POI XLSX格式的确定性哈希值似乎存在问题,即使对于空的ByteArray流也是如此。 这种情况在数百次甚至数千次迭代后随机发生。 用于重现问题的相关代码段: // TestNG FileTest: @Test(enabled = true) // indeterminism at random iterations, such as 400 or 1290 public void emptyXLSXTest() throws IOException, NoSuchAlgorithmException { final Hasher hasher = new HasherImpl(); boolean differentSHA256Hash = false; for (int i = 0; i < 10000; i++) { final ByteArrayOutputStream excelAdHoc1 = BusinessPlanInMemory.getEmptyExcel("xlsx"); final ByteArrayOutputStream […]