在Free Pascal库中,有一个哈希库,可以使用MD5和SHA1哈希算法(http://wiki.freepascal.org/hash).但是如果我想使用更高的一个,例如SHA256或SHA512呢?我可以使用Free Pascal实现这一目标吗?搜索FP Wiki重新调整SHA256\SHA512的零点击率.
对于密码列,是否存在使用"sha-256"存储密码的mysql功能?或者我应该在Java代码中将其哈希(比如如何在Java中使用sha256散列一些字符串?),然后再将其存储在数据库中,然后每次哈希密码输入并与数据库列值进行比较以进行身份验证?
TIA.
我遇到了一些我为密码认证库编写的Go代码的问题.一般的想法是提供2个函数,Check()和New(),它们都提供了密码和256位HMAC密钥.Check()函数还提供256位salt和256位散列,并返回一个布尔值.New()函数返回一个新的随机salt,它是相应的哈希值.这两个函数都依赖于辅助函数hash(),它使用scrypt进行键延长,并且可以生成输出哈希.
当我最初编写它时,这是有效的(事实证明,我已经使用了早期丢失的代码修订版生成的测试数据).
我现在遇到的问题是,当提供由旧版本代码生成的数据时,Check()函数似乎工作得很好,但现在似乎失败了代码自己的New()函数生成的任何数据(两者都使用底层的hash()函数).
我知道,我应该从一开始就有git版本控制代码!我现在已经吸取了教训.
我已将函数分组并将问题快速演示到一个.go文件中,如下所示,并添加了一些输出用于调试:
package main
import (
"code.google.com/p/go.crypto/scrypt"
"crypto/hmac"
"crypto/rand"
"crypto/sha256"
"crypto/subtle"
"errors"
"fmt"
"io"
)
// Constants for scrypt. See code.google.com/p/go.crypto/scrypt
const (
KEYLENGTH = 32
N = 16384
R = 8
P = 1
)
// hash takes an HMAC key, a password and a salt (as byte slices)
// scrypt transforms the password and salt, and then HMAC transforms the result.
// Returns the resulting 256 bit hash.
func hash(hmk, pw, s []byte) (h []byte, …Run Code Online (Sandbox Code Playgroud) 我正在尝试找到可能比 SHA256 更快的东西。我有超过 10 亿条记录需要散列并验证它们是否唯一。我目前正在通过 MD5 运行它,它看起来很快,然后通过 sha256 以避免冲突。按照这个顺序运行它们似乎给了我一点性能提升,但我仍然需要它更快。我正在寻找在 c# 或一些伪代码中完成的一些哈希的名称或示例,以便我可以在 c# 中重新创建它。
微软正在远离SHA1.结果,许多可执行文件现在具有两个或更多个签名; 一个使用SHA1摘要以实现向后兼容,另一个使用SHA256.
例如,如果您查看vstest.executionengine.exeVisual Studio 2013的属性(查看Windows 8或Server 2012上的属性),您将看到它有来自3个不同证书的3个不同签名.
我已经有一个使用的组合代码CryptQueryObject,CryptMsgGetParam和.NET SignedCms,但它只能看到3个签名1.一个签名者似乎只有一条消息.
我需要获取所有签名的证书信息.如何对多个签名进行建模 - 是单个消息中的多个消息还是多个签名者?Microsoft是否添加了新的API或新标志来访问多个签名?
我的新公司霸主要求我在客户门户上拥有每个工件的 SHA256 哈希值。当然,我可以自己生成或在构建脚本或 Makefile 中生成它,但这感觉就像 Jenkins 能够做的那样。
我正在做的一个项目有这么多安全操作。我以前从未遇到过安全问题。因此,我的问题可以是初学者级别。
在我的问题中,我得到一个字节数组数据,它有一个证书和一些其他参数。我需要验证此证书及其签名。但我无法处理签名验证。事实上,我不知道我应该使用哪个公钥来验证。
代码如下。感谢帮助..!
public boolean startValidation(PublicKey publicKey) {
CertificateFactory cf;
try {
cf = CertificateFactory.getInstance("X.509");
} catch (CertificateException e) {
e.printStackTrace();
return false;
}
try {
certificate = (X509Certificate) cf.generateCertificate(new ByteArrayInputStream(certBytes));
} catch (CertificateException e) {
e.printStackTrace();
setCertError(0);
return false;
}
if (!checkProvider()){
setCertError(1);
return false;
}
boolean[] usages = certificate.getKeyUsage();
boolean usage = usages[0] && usages[2];
if (!usage){
setCertError(2);
}
try {
certificate.checkValidity();
} catch (CertificateNotYetValidException e) {
e.printStackTrace();
setCertError(3);
return false;
} catch (CertificateExpiredException e) {
e.printStackTrace();
setCertError(4); …Run Code Online (Sandbox Code Playgroud) 我试图在JavaScript中重新创建以下C#代码.
SHA256 myHash = new SHA256Managed();
Byte[] inputBytes = Encoding.ASCII.GetBytes("test");
myHash.ComputeHash(inputBytes);
return Convert.ToBase64String(myHash.Hash);
Run Code Online (Sandbox Code Playgroud)
此代码返回 "n4bQgYhMfWWaL+qgxVrQFaO/TxsrC4Is0V1sFbDwCgg="
这是我到目前为止我的JavaScript代码
var sha256 = require('js-sha256').sha256;
var Base64 = require('js-base64').Base64;
var sha256sig = sha256("test");
return Base64.encode(sha256sig);
Run Code Online (Sandbox Code Playgroud)
JS代码返回 "OWY4NmQwODE4ODRjN2Q2NTlhMmZlYWEwYzU1YWQwMTVhM2JmNGYxYjJiMGI4MjJjZDE1ZDZjMTViMGYwMGEwOA=="
这些是我使用的2个JS库
有谁知道如何使它工作?我使用错误的库吗?
我已经尝试了来自 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
}
Run Code Online (Sandbox Code Playgroud)
此函数从给定的字符串返回带有键的哈希值。密钥是: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);
String hash = android.util.Base64.encodeToString(sha256_HMAC.doFinal(message.getBytes()), Base64.URL_SAFE);
return new String(Hex.encodeHex(hash.getBytes()));
}
catch (Exception e){
e.printStackTrace(); …Run Code Online (Sandbox Code Playgroud) 多个 Hmac 加密器输出 google 关闭库的不同结果。
我尝试了多个 Hmac 加密器,它们输出相同的结果。但是,当在 NodeJS 和 ClojureScript 中使用 google 闭包库时,它会输出完全不同的结果。
require("google-closure-library");
function bytesToHex(b) {
var hexchars = '0123456789abcdef';
var hexrep = new Array(b.length * 2);
for (var i = 0; i < b.length; ++i) {
hexrep[i * 2] = hexchars.charAt((b[i] >> 4) & 15);
hexrep[i * 2 + 1] = hexchars.charAt(b[i] & 15);
}
return hexrep.join('');
}
goog.require('goog.crypt.Hmac');
goog.require('goog.crypt.Sha256');
function getHmac(key, message) {
var hasher = new goog.crypt.Sha256();
var hmacer = new goog.crypt.Hmac(hasher, key, 64);
return …Run Code Online (Sandbox Code Playgroud) sha256 ×10
hmac ×3
java ×3
c# ×2
cryptography ×2
javascript ×2
authenticode ×1
base64 ×1
build ×1
cryptoapi ×1
encryption ×1
freepascal ×1
go ×1
hash ×1
jenkins ×1
md5 ×1
mysql ×1
node.js ×1
rsa ×1
scrypt ×1
sha1 ×1
sha512 ×1
swift ×1