Tag: sha256

从CLI生成base64编码的哈希以匹配Java

我有一个java代码库,它从一个字符串生成一个URL安全的base64编码哈希,并想知道是否/如何使用linux命令行工具。 我猜测我在做什么的问题是字符集/编码或将字符串转换为字节数组。 Java代码: 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?

Java:有效地计算大文件的SHA-256哈希值

我需要计算一个大文件(或其中一部分)的SHA-256哈希值。 我的实现工作正常,但它比C ++的CryptoPP计算慢得多(25分钟与10分钟~30GB文件)。 我需要的是C ++和Java中类似的执行时间,因此哈希几乎可以在同一时间准备就绪。 我也尝试过Bouncy Castle实现,但它给了我相同的结果。 这是我如何计算哈希: int buff = 16384; try { RandomAccessFile file = new RandomAccessFile(“T:\\someLargeFile.m2v”, “r”); long startTime = System.nanoTime(); MessageDigest hashSum = MessageDigest.getInstance(“SHA-256”); byte[] buffer = new byte[buff]; byte[] partialHash = null; long read = 0; // calculate the hash of the hole file for the test long offset = […]

Glassfish安全性 – jdbcRealm:如何使用SHA-256摘要配置登录

我在glassfish v3.0.1 b22中使用jdbcRealm来保证安全性。 它的设置是为了通过以下博客使用我的数据库中的USER表进行身份validation: http : //blogs.oracle.com/foo/entry/mort_learns_jdbc_realm_authentication 。 如果我将摘要算法保留为纯文本,我的工作正常。 但是,当我尝试使用SHA-256进行摘要算法时,它会停止工作。 我所做的是在Glassfish中指定 – 安全 – 领域 – jdbcRealm – 我想要SHA-256的摘要(我只是在摘要字段中键入SHA-256)。 然后我编写了一个简单的Java程序,将密码文本转换为SHA-256哈希。 然后我将该哈希粘贴到数据库中的密码字段中。 顺便说一句,密码字段是类型varchar(30)。 我不能再登录了。 有一点我注意到我的简单Java程序每次为同一文本字段生成不同的哈希。 下面是我简单的java程序: MessageDigest md = MessageDigest.getInstance(“SHA-256”); String text = “admin”; md.update(text.getBytes(“UTF-8”)); byte[] digest = md.digest(); System.out.println(digest.toString());

用Java实现Kraken API

所以我目前正致力于Kraken API for Java 。 我正在使用我在http://pastebin.com/nHJDAbH8上找到的示例代码。 Kraken ( https://www.kraken.com/help/api )描述的一般用法是: API-Key = API密钥 API-Sign =使用HMAC-SHA512的消息签名 ( URI path + SHA256( nonce + POST data ) )和base64解码的秘密API密钥 和 nonce =总是增加无符号的64位整数 otp =双因素密码(如果启用了双因素,否则不需要) 但是我面临以下回应: {“error”:[“EAPI:Invalid key”]} 我已经尝试了几种方法(获得一个新的API,尝试更改sha256方法,因为我认为它被散列的方式有问题) 所以这是代码: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; import java.net.URL; import java.security.InvalidKeyException; import java.security.MessageDigest; import […]

java aes 256 java.security.InvalidKeyException:安装策略后出现非法密钥大小

我用AES 256密钥加密字节有问题。 我已经安装了这个政策。 这就是我所做的: 下载文件: http : //www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html 我将文件local_policy和US_export_policy移动到目录/Library/Java/JavaVirtualMachines/jdk1.7.0_40.jdk/Contents/Home/jre/lib/security 我重启mac 但我仍然收到以下代码的错误消息: KeyGenerator keyGenerator = KeyGenerator.getInstance(“AES”); keyGenerator.init(256); SecretKey secretKey = keyGenerator.generateKey(); Cipher decryption = Cipher.getInstance(“AES/CBC/PKCS5PADDING”); decryption.init(Cipher.DECRYPT_MODE, secretKey, new IvParameterSpec(secretKey.getEncoded())); // <– Illegal key size 我的Java版本: java version “1.7.0_40” Java(TM) SE Runtime Environment (build 1.7.0_40-b43) Java HotSpot(TM) 64-Bit Server VM (build 24.0-b56, mixed mode) 我需要做什么,使用256 AES加密?

c#和java – hmacsha256哈希之间的区别

我在Java中有以下代码: byte[] secretKey = secretAccessKey.getBytes(“UTF-8”); SecretKeySpec signingKey = new SecretKeySpec(secretKey, “HmacSHA256”); Mac mac = Mac.getInstance(“HmacSHA256”); mac.init(signingKey); byte[] bytes = data.getBytes(“UTF-8”); byte[] rawHmac = mac.doFinal(bytes); String result = javax.xml.bind.DatatypeConverter.printBase64Binary(rawHmac); 以及C#中的以下代码: UTF8Encoding enc = new UTF8Encoding(); byte[] secretKey = enc.GetBytes(secretAccessKey); HMACSHA256 hmac = new HMACSHA256(secretKey); hmac.Initialize(); byte[] bytes = enc.GetBytes(data); byte[] rawHmac = hmac.ComputeHash(bytes); string result = […]

java hmac / sha512代

我有这个PHP代码生成一个HMAC (而不是一个简单的消息摘要): 通过ABC输入,其输出为: 100A6A016A4B21AE120851D51C93B293D95B7D8A44B16ACBEFC2D1C9DF02B6F54FA3C2D6802E52FED5DF8652DDD244788A204682D2D1CE861FDA4E67F2792643 我需要在java中克隆它。 所以这是我当前的java克隆: private String generateHMAC( String datas ) { // final Charset asciiCs = Charset.forName( “utf-8” ); Mac mac; String result = “”; try { byte[] bytesKey = PayboxConstants.KEY.getBytes( ); final SecretKeySpec secretKey = new SecretKeySpec( bytesKey, “HmacSHA512” ); mac = Mac.getInstance( “HmacSHA512” ); mac.init( secretKey ); final byte[] macData = […]

Java SHA256向PHP SHA256输出不同的哈希值?

PHP代码: echo hash(‘sha256’, ‘jake’); PHP输出: cdf30c6b345276278bedc7bcedd9d5582f5b8e0c1dd858f46ef4ea231f92731d Java代码: String s = “jake”; MessageDigest md = MessageDigest.getInstance(“SHA-256”); md.update(s.getBytes(Charset.forName(“UTF-8”))); byte[] hashed = md.digest(); String s2 = “”; for (byte b : hashed) { s2 += b; } System.out.println(s2); Java输出: -51-1312107528211839-117-19-57-68-19-39-43884791-1141229-4088-12110-12-223531-11011529 我曾预料到两者会返回相同的结果。 显然,事实并非如此。 如何让两者相匹配或者不可能? 编辑:我犯了一个错误,认为我现在已经回答了这个问题。

Java openssl加密/解密密钥生成

我正在使用Java 8,我试图用Java模拟以下openssl调用。 加密: echo -n ‘hello world’ | openssl enc -a -aes-256-cbc -md sha256 -pass pass:97DE:4F76 U2FsdGVkX18PnO / NLSxJ1pg6OKoLyZApMz7aBRfKhJc = 解密: echo U2FsdGVkX18PnO/NLSxJ1pg6OKoLyZApMz7aBRfKhJc= | openssl enc -d -a -aes-256-cbc -md sha256 -pass pass:97DE:4F76 你好,世界 问题: 我的实现不起作用。 我已经访问了许多其他StackOverflow答案,但未能找到正确的实现。 任何人都可以指出我正确的方向来解决这个问题吗? 上例中的openssl系统调用使用摘要sha256。 如果我使用sha1,而不是Java实现,那么只需PBKDF2WithHmacSHA256 PBKDF2WithHmacSHA1更改PBKDF2WithHmacSHA1吗? Test.java package test; import java.security.spec.KeySpec; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.IvParameterSpec; import […]