我将用户密码存储在db上作为sha1哈希.
不幸的是,我得到了奇怪的答案.
我将字符串存储为:
MessageDigest cript = MessageDigest.getInstance("SHA-1");
cript.reset();
cript.update(userPass.getBytes("utf8"));
this.password = new String(cript.digest());
Run Code Online (Sandbox Code Playgroud)
我想要这样的东西 - >
aff - >"0c05aa56405c447e6678b7f3127febde5c3a9238"
而不是
aff - > V@ \D~fx : 8
在objective-c中它看起来像这样:
#include <sys/xattr.h>
@implementation NSString (reverse)
-(NSString*)sha1
{
NSData *data = [self dataUsingEncoding:NSUTF8StringEncoding];
uint8_t digest[CC_SHA1_DIGEST_LENGTH];
CC_SHA1(data.bytes, (int)data.length, digest);
NSMutableString *output = [NSMutableString stringWithCapacity:CC_SHA1_DIGEST_LENGTH * 2];
for (int i = 0; i < CC_SHA1_DIGEST_LENGTH; i++)
[output appendFormat:@"%02x", digest[i]];
return output;
}
@end
Run Code Online (Sandbox Code Playgroud)
我需要Swift这样的东西,有可能吗?
请展示工作示例.
当我尝试使用MD5指纹时keytool
,我得到一个SHA1指纹而谷歌地图无法识别它.我如何获得MD5指纹?
我正在构建一个系统,它需要能够找到是否已更新blob字节.我认为我应该计算它的校验和,存储它并稍后计算相同的校验和,以查看博客是否已更新,而不是存储整个blob(它们可以高达5MB).
目标是最小化以下(按此顺序):
我们的系统碰撞不超过1/1,000,000是可以接受的.问题不在于安全性,而在于更新/错误检测,因此罕见的冲突是可以的.(这就是为什么我把它放在最小化的东西中).
另外,我们不能自己修改文本的blob.
当然,md5
,crc
或sha1
浮现在脑海中,如果我想要一个快速的解决方案,我去了.然而,不仅仅是一个快速的解决方案,我正在寻找可以比较不同方法以及利弊的东西.
我使用HMAC-SHA1散列一些值,使用Java中的以下代码:
public static String hmacSha1(String value, String key) {
try {
// Get an hmac_sha1 key from the raw key bytes
byte[] keyBytes = key.getBytes();
SecretKeySpec signingKey = new SecretKeySpec(keyBytes, "HmacSHA1");
// Get an hmac_sha1 Mac instance and initialize with the signing key
Mac mac = Mac.getInstance("HmacSHA1");
mac.init(signingKey);
// Compute the hmac on input data bytes
byte[] rawHmac = mac.doFinal(value.getBytes());
// Convert raw bytes to Hex
byte[] hexBytes = new Hex().encode(rawHmac);
// Covert array of Hex bytes to a String …
Run Code Online (Sandbox Code Playgroud) 我正在尝试在Firebase中创建一个动态链接,当我选择Android应用程序时,它显示错误"将SHA-1添加到此Android应用程序",我已经添加了凭据,但我不是确定我如何"将SHA-1添加到应用程序"
这是怎么做到的?
在Makefile中,这可以通过以下方式完成:
g++ -DGIT_SHA1="`git log -1 | head -n 1`" ...
Run Code Online (Sandbox Code Playgroud)
这非常有用,因为二进制文件知道确切的提交SHA1,所以它可以在segfault的情况下转储它.
我如何用CMake实现同样的目标?
我正在寻找通过 Java中的Oauth实现一个获得Twitter授权的应用程序.第一步是获取请求令牌.这是app引擎的Python示例.
为了测试我的代码,我正在运行Python并使用Java检查输出.以下是Python生成基于哈希的消息验证代码(HMAC)的示例:
#!/usr/bin/python
from hashlib import sha1
from hmac import new as hmac
key = "qnscAdgRlkIhAUPY44oiexBKtQbGY0orf7OV1I50"
message = "foo"
print "%s" % hmac(key, message, sha1).digest().encode('base64')[:-1]
Run Code Online (Sandbox Code Playgroud)
输出:
$ ./foo.py
+3h2gpjf4xcynjCGU5lbdMBwGOc=
Run Code Online (Sandbox Code Playgroud)
如何在Java中复制此示例?
try {
// Generate a key for the HMAC-MD5 keyed-hashing algorithm; see RFC 2104
// In practice, you would save this key.
KeyGenerator keyGen = KeyGenerator.getInstance("HmacMD5");
SecretKey key = keyGen.generateKey();
// Create a MAC object …
Run Code Online (Sandbox Code Playgroud) 给定两个不同的消息,A和B(可能是20-80个字符的文本,如果大小完全重要),A的MD5摘要与B的MD5摘要相同且 A的SHA1摘要的概率是多少?与B的SHA1摘要相同?那是:
(MD5(A) == MD5(B)) && (SHA1(A) == SHA1(B))
Run Code Online (Sandbox Code Playgroud)
假设没有恶意意图,即没有选择消息以找到冲突.我只是想知道这种情况发生的可能性.
我认为机会是"天文数字低",但我不确定如何验证这一点.
更多信息:可能消息池的大小受到限制,但是很大(几亿).生日悖论的情况正是我所担心的.
我试图找到答案,但我找不到答案......
如何检查我的SSL证书是否使用SHA1或SHA2?
我问的原因是因为它可能与Mozilla Browers上没有加载的证书有关....
有任何想法吗?我可以通过cPanel查看吗?