直接使用哈希值进行加密不是一个好主意吗?

时间:2018-02-22 13:47:57

标签: encryption hash

例如,sha-256生成的哈希值直接用于这样的特定字节数组。

void Run(CryptoArray& plain, CryptoArray& key)
{
  uint8_t *hash = Sha256::FromArray(key.getArray(), key.getSize());
  size_t round = plain.getSize() / 8;
  size_t remain = plain.getSize() % 8;
  for (size_t i = 0; i < round; i++)
    ((uint64_t *)plain.getArray())[i] ^= ((uint64_t *)hash)[i % 8];

  uint8_t *arr = plain.getArray() + round * 8;
  for (size_t i = 0; i < remain; i++)
    arr[i] ^= hash[i];
}

如果在遥远的未来发明(或使用大整数)2 ^ 2048位计算机,这个问题是并行化的并且可以很容易地解决。但是,我知道这个简单的hash-crpyto函数和常见的加密函数都是为了让你很难充分利用密码。

如果是这样,开发人员是否添加了其他几项功能,以增加使用这些功能(AES,DES,...)获取密码所需的时间?如果没有,单独使用哈希函数是否存在致命问题?我看到的所有程序都没有使用这样的哈希函数。

1 个答案:

答案 0 :(得分:2)

我认为阅读Hashes and Encryption算法之间的差异会有所帮助。