是否可以使用M2Crypto生成SHA-256哈希?Python 2.4的SHA模块不支持256,所以我开始使用PyCrypto,只是发现PyCrypto不支持PKCS#5(在我的项目的其他地方需要.)我切换到M2Crypto结果,现在我会喜欢用M2Crypto等效替换我的PyCrypto SHA-256调用...我试着查看单元测试,但没有看到任何东西.
CodeIgniter使用MD5或SHA1进行散列:
$str = do_hash($str); // SHA1
$str = do_hash($str, 'md5'); // MD5
Run Code Online (Sandbox Code Playgroud)
但是,我的项目需要SHA-256.我该如何解决这个问题?
我一直在尝试加密一个项目的一些用户密码,但我似乎无法让它正常工作.我决定使用SHA-256算法,当我使用Sha2向MySQL引入密码时(例如,256)它为加密密码添加了两个零.在Java中,我使用它来散列程序中的文本,但无法获得相同的结果.
try {
MessageDigest digest = MessageDigest.getInstance("SHA-256");
byte[] hash = digest.digest("ContrasenhaPassword".getBytes("UTF-8"));
StringBuilder hexString = new StringBuilder();
for (int i: hash) {
hexString.append(Integer.toHexString(0XFF & i));
}
String Hashed = new String(hexString);
System.out.println(hexString);
System.out.println(Hashed);
// Below, MySQL Output for SHA2('ContrasenhaPassword',256)
System.out.println("d17bf0da90f56b8fc627bac6523ffd284aa0d82c870e1a0428274de048f49d78");
System.out.println(Hashed.equals(hexString));
} catch (Exception e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
我得到的输出是:
d17bf0da90f56b8fc627bac6523ffd284aa0d82c87e1a428274de048f49d78
d17bf0da90f56b8fc627bac6523ffd284aa0d82c87e1a428274de048f49d78
d17bf0da90f56b8fc627bac6523ffd284aa0d82c870e1a0428274de048f49d78
false
BUILD SUCCESSFUL (total time: 0 seconds)
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
对于一个新项目,我需要使用SHA256散列NSString.我使用了以下代码:
unsigned char hashedChars[32];
NSString *inputString;
inputString = [NSString stringWithFormat:@"hello"];
NSData * inputData = [inputString dataUsingEncoding:NSUTF8StringEncoding];
CC_SHA256(inputData.bytes, inputData.length, hashedChars);
Run Code Online (Sandbox Code Playgroud)
我在stackoverflow上找到了这段代码.我真的没有得到这些代码所做的所有事情是关于代码的一些问题:
1.CC_SHA256会产生哈希值,但这个哈希值会再次存储在inputData中吗?我的意思是我可以做这样的事情:
NSString *string=CC_SHA256(..) //of course you can't put it directly in a NSString, but you get the point
Run Code Online (Sandbox Code Playgroud)
2.最后哈希必须是十六进制字符串,但CC_SHA256输出的类型是什么(UTF-8 ??)?
3. CC_SHA256的第一个参数为什么我必须在末尾放置字节并且"inputData"足够了?
4.需要字符串的长度(第二个参数)?
5.最后一个参数对我没有任何意义,有人可以解释一下,为什么hashedChars必须是32?
我正在开发一个网络应用程序。现在从安全角度来看,密码从客户端发送到服务器时需要加盐散列。 现在我的问题是,如果我随机生成一个盐,将它附加到密码并散列组合,如何验证这个密码。由于生成的盐是随机的,盐+密码组合的哈希值每次都会不同。 如果我将生成的盐和用户凭据一起发送到服务器,这将暴露盐。暴露的盐会造成类似的麻烦,因为试图破解密码的人可以在暴露的盐上附加不同的密码以获取哈希值并进行匹配。我已经检查了许多网站和有关堆栈溢出的问题,但没有完全符合我的需要。
有一些工具可以读取浏览器的内存并窃取输入的密码。因此,客户端也需要加盐哈希。
我正在寻找一种可靠的命令行方法来获取 Windows 中文件的 SHA256 哈希值。我的理解是,这样做的方法是在 PowerShell 下通过 Microsoft 的 Get-FileHash cmdlet。我看过几个带有示例的网站,并查看了 Microsoft 自己的文档。以下语法似乎适用于 Windows Server 2012:
Get-FileHash myfile.txt -Algorithm SHA256
Run Code Online (Sandbox Code Playgroud)
命令运行没有错误,但没有输出。如果我将输出发送到文件,则创建的文件没有内容。我还看到了将输出通过管道传输到 Format-List 的示例;我试过了,但仍然没有。我也试过用无效参数运行命令,但又没有。
我愿意使用不同的程序,但由于业务需求,它需要是受支持的下载。
我需要从SQL服务器中的表生成SHA256 base 64哈希,但我在列表 HASHBYTES参数中找不到该算法.
有没有办法直接在SQL Server中生成它?
重复的disclamer:
我的问题是在T-sql存储过程中没有重复SHA256,因为我正在寻找未在页面中列出的SHA256 base 64版本的算法.
数字示例
我在SQL Server中有这个查询结果
开始日期,结束日期,POD,金额,货币
2016-01-01,2016-12-31,1234567890,12000,EUR
这给我以下字符串(使用concatenate函数)
2016-01-012016-12-31123456789012000EUR
whit 这个转换工具我得到以下哈希
GMRzFNmm90KLVtO1kwTf7EcSeImq + 96QTHgnWFFmZ0U
我需要发送给客户.
我正在使用哈希函数sha256.Sum256(data []byte) [sha256.Size]byte.我需要将返回的摘要存储在另一个更大的数组的末尾.
var x [sha256.BlockSize+sha256.Size]byte
? = sha256.Sum256(data)
Run Code Online (Sandbox Code Playgroud)
到目前为止我找到的唯一解决方案如下:
var x [sha256.BlockSize+sha256.Size]byte
var d = sha256.Sum256(data)
copy(x[sha256.BlockSize:], d[:])
Run Code Online (Sandbox Code Playgroud)
可以避免这个副本吗?
我想创建一个python程序,要求输入然后哈希(sha-256)输入然后打印它.这已经存在了吗?我该怎么做呢
在Signature Version 4上的AWS示例之后,我尝试使用带有Google apps脚本的Google Sheets重现该示例。我在示例中遇到了kregion签名的问题。尽管我可以使用在线签名工具确认AWS示例有效,但是我永远无法使用任何Google应用程序脚本来复制示例输出。由于HMAC SHA256签名在示例的早期部分(kdate)可以正常工作,因此问题似乎出在存储或使用数据的方式上。
以下是适用于kDate的内容:来自另一个stackoverflow条目的部分,用于将字节数组转换为十六进制字符串,并借助computeHmacSha256Signature的Google Apps脚本文档:
var input="20120215";
var key="AWS4"+"wJalrXUtnFEMI/K7MDENG+bPxRfiCYEXAMPLEKEY";//Do not worry, this is an example key, not my actual key
var signature=Utilities.computeHmacSha256Signature(input,key);
signature=signature.map(function(chr){return (chr+256).toString(16).slice(-2)}).join('');//convert byte array to hex string
Logger.log(signature);//valid 969fbb94feb542b71ede6f87fe4d5fa29c789342b0f407474670f0c2489e0a0d
Run Code Online (Sandbox Code Playgroud)
这是kRegion的同一件事:
var input="us-east-1";
var key="969fbb94feb542b71ede6f87fe4d5fa29c789342b0f407474670f0c2489e0a0d";
var signature=Utilities.computeHmacSha256Signature(input,key);
signature=signature.map(function(chr){return (chr+256).toString(16).slice(-2)}).join('');
Logger.log(signature);//non-valid a59e30f9d899c47b3dd68ea1c0ab3bb529e03a8f4ed2f54cb64af547330a22a0
Run Code Online (Sandbox Code Playgroud)
我不惊讶它不会产生有效的示例kRegion输出,69daa0209cd9c5ff5c8ced464a696fd4252e981430b10e3d3fd8e2f197d7a70c因为密钥存储为十六进制字符串,这没有多大意义。这是试图将十六进制字符串解码为从此github条目启发而来的字节数组的同一件事:
var input="us-east-1";
var key="969fbb94feb542b71ede6f87fe4d5fa29c789342b0f407474670f0c2489e0a0d";
var a=[];
for(var i=0, len=key.length; i<len; i+=2) {
a.push(parseInt(key.substr(i,2),16));
}
key=a;
Logger.log(key);//[150.0, …Run Code Online (Sandbox Code Playgroud) sha256 digital-signature hmac amazon-web-services google-apps-script
sha256 ×10
hash ×3
python ×2
arrays ×1
codeigniter ×1
comparison ×1
cryptography ×1
encryption ×1
go ×1
hmac ×1
java ×1
javascript ×1
m2crypto ×1
mysql ×1
objective-c ×1
owasp ×1
php ×1
powershell ×1
saltedhash ×1
security ×1
sha ×1
slice ×1
sql-server ×1