阅读本文后,使用 SHA-1 目录存储文件听起来是个好主意。
我不知道这意味着什么,但我只知道 SHA-1 和 MD5 是哈希算法。如果我使用此 ruby 脚本计算 SHA-1 哈希值,并且更改文件的内容(这会更改哈希值),那么我如何知道文件的存储位置?
那么我的问题是,实现 SHA-1/文件存储系统的基础知识是什么?
如果所有文件都一直在更改内容,是否有更好的解决方案来存储它们,或者您只需要不断更新哈希值?
我只是在考虑如何创建一个通用的文件存储系统,例如 GoogleDocs、Flickr、Youtube、DropBox 等,您可以在不同的环境中重用它(例如存储PubMed 期刊文章或Cramster作业和测试,或者只是图片如 Flickr 上)。我可能会将它们存储在 Amazon EC2 上。只是一些系统,这样我就可以说“从现在开始,我将在 99% 的时间里进行文件存储”,这样我就可以不再考虑构建可靠/一致的方式来存储文件并解决一些实际问题。
我正在考虑在 Symfony2 中构建 REST API,并且在他们的自定义身份验证提供程序中,他们展示了如何构建 WSSE 身份验证系统,这对于我需要做的事情应该没问题。我将首先通过 cURL 构建和测试 API,因此我需要能够快速生成标头。我找到了一个JS 生成器,它显示了我需要的标题。
从我读到的内容来看,密码摘要应该是按顺序连接在一起的随机数、时间戳和用户密码的 base64 编码的 SHA1。我从以下数据开始:
$nonce = '4c5625ec7af5bdff';
$timestamp = '2013-04-03T04:46:19Z';
$password = 'mypass';
Run Code Online (Sandbox Code Playgroud)
并生成摘要:
$digest = base64_encode(sha1($nonce.$timestamp.$password));
Run Code Online (Sandbox Code Playgroud)
我不明白的是$digest
变量现在设置为YTgxMDUzOWQzMDBiZmU1MmI2NWQ0YjYwNDc3ZmY5OWI3MmVlZTQyNA==
,但是来自 JS 生成器的示例 PasswordDigest 显示为qBBTnTAL/lK2XUtgR3/5m3Lu5CQ=
. 我一定在某处遗漏了一步,但我不确定它是什么。
使用SecureRandom
是否可以保证2个连续调用不会返回相同的数字?
如果这是客户端 API 端的严格要求,那么代码中的以下循环是否多余?
Random random = SecureRandom.getInstance("SHA1PRNG");
long value1 = (long)(r.nextDouble() * LIMIT) + 1;
long value2 = (long)(r.nextDouble() * LIMIT);
while(value1 == value2) {
value2 = (long)(r.nextDouble() * LIMIT);
}
Run Code Online (Sandbox Code Playgroud) 我正在为 Mac 和 Windows 中的 apk 文件创建 Sha1 校验和。我使用相同的文件,而在 mac 我使用这个
cat AppName.apk |openssl dgst -binary -sha1 | openssl base64 | tr '+/' '-_' |tr -d '='
// I get 7pF3C4YCqMHKXOzOep_DW1feJxE
Run Code Online (Sandbox Code Playgroud)
在 Windows 中,我使用这里提到的各种方法,所有这些方法都会生成相同的校验和。
ee91770b8602a8c1ca5cecce7a9fc35b57de2711
Run Code Online (Sandbox Code Playgroud)
如果是同一个文件的sha1 hash,为什么不一样?或者哈希可以是这两个?我在这里很困惑。谁能解释一下?
这应该很容易解决......
我的 CryptoJS 对象存在,但它没有 SHA1 方法。
我需要做什么才能使这项工作发挥作用?那里有很多很多样本。我的当然不行
.enc.Hex.stringify 方法确实存在...
任何帮助表示赞赏。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
link href="blaw blaw blaw" rel="stylesheet" >
</head>
<body>
content blaw blaw blaw
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/core.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/enc-hex.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/hmac-sha1.js"></script>
<script type="text/javascript">
var StringToSign = "blaw blaw blaw";
var hash = CryptoJS.SHA1(StringToSign); // <--- No SHA1 method!
var result = CryptoJS.enc.Hex.stringify(hash);
$(".content .z-value").html(result);
</script>
Run Code Online (Sandbox Code Playgroud)
谢谢
对于 CRC32,可以组合两个哈希,这样给定两个流 A 和 B,我们只需知道 CRC(A)、CRC(B) 和 length(B) 就可以找到 CRC(A+B)。(此处提供了实现,以及 Mark Adler对其工作原理的解释)。
例如,这使我们能够并行计算单个流上的哈希值,或者仅在其包含介质上使用前向查找来计算大型(如“不适合内存”) 、严重碎片化的流上的哈希值(这为非常慢的媒体提供了巨大的加速潜力)。
似乎没有可用于其他更复杂的哈希算法(例如 MD5)的此类行为的实现。MD5 根本不可能实现这种行为吗?难道这件事太难做到了,以至于没有人愿意去尝试吗?更复杂的算法(例如 SHA1 或 SHA256)怎么样?我很想听听对此的任何见解。
我经历了许多类似的话题,但没有运气!!
我想使用 PEM 文件生成公钥和私钥。以下是我使用的代码:
String pemFileNme = "C:\\Users\\amitmm\\Desktop\\clean\\key.pem";
File pubKeyFile = new File(pemFileNme);
File privKeyFile = new File(pemFileNme);
// read public key DER file
DataInputStream dis = new DataInputStream(new
FileInputStream(pubKeyFile));
byte[] pubKeyBytes = new byte[(int)pubKeyFile.length()];
dis.readFully(pubKeyBytes);
dis.close();
// read private key DER file
dis = new DataInputStream(new FileInputStream(privKeyFile));
byte[] privKeyBytes = new byte[(int)privKeyFile.length()];
dis.read(privKeyBytes);
dis.close();
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
// decode public key
X509EncodedKeySpec pubSpec = new X509EncodedKeySpec(pubKeyBytes);
RSAPublicKey pubKey = (RSAPublicKey)
keyFactory.generatePublic(pubSpec);
// decode private key
PKCS8EncodedKeySpec privSpec = …
Run Code Online (Sandbox Code Playgroud) 我正在尝试将 c# 代码转换为 swift,其中我尝试将字符串转换为 sha1 哈希值。我正在尝试快速实现类似的结果。但是我得到了不同的结果。如果我遗漏了什么,有人可以指出我正确的方向吗?任何帮助是极大的赞赏。
C# 代码
public static string toSha1Digest(this string str)
{
using (SHA1 sha1 = new SHA1CryptoServiceProvider())
{
var mStr = "test1234";
var uni = new byte[mStr.Length * 2];
var encoder = Encoding.Unicode.GetEncoder();
encoder.GetBytes(mStr.ToCharArray(), 0, mStr.Length, uni, 0, true);
var hByte = sha1.ComputeHash(uni);
var buildString = new StringBuilder();
hByte.ToString();
for (var i = 0; i < hByte.Length; i++)
{
buildString.Append(hByte[i].ToString("X2"));
}
var convertedString = buildString.ToString();
buildString = null;
Array.Resize<byte>(ref uni, 0);
Console.WriteLine(convertedString);
}
}
Run Code Online (Sandbox Code Playgroud)
印刷
5387F24564B241075F48BBDFDDDC12640015E92A …
Run Code Online (Sandbox Code Playgroud) 我有一个SECRET_KEY,如何使用python反编译用户密码?我假设加密方法是sha1.谢谢.
可能重复:
我可以md5(sha1(密码))?
$pass = md5($_POST["pass"].sha1($_POST["pass"]))
Run Code Online (Sandbox Code Playgroud)
我在某个地方看到这个并且感到困惑.这是否读取密码并使用sha1然后md5或反向解密?还是有一些我遗失的东西?