python - python加密的基础知识w/hashlib sha1

标签 python cryptography sha1 hmac hashlib

我正在努力完全理解加密的工作原理和编码方式,尤其是使用 Python 时。我只是想了解基础知识并以最简单的形式创建代码。

我将在两个不同的站点之间传递用户 ID,但显然我需要使用私钥对其进行加密,以便 Website2 知道它来自 Website1。这似乎是我的代码: http://docs.python.org/library/hashlib.html#module-hashlib ,但它没有很好的例子(或者我可能在错误的地方)。

我遇到的问题是完全理解如何编码和解码。

假设每个网站都知道的共享私钥是:

shared_private_key = "ABCDEF"

我希望 Website1 将用户 ID 传递给 Website2:

userID = "123456"

Website1 如何以可以通过 HTTP header 发送加密的方式使用私钥加密我的 userID,然后让 Website2 解密并能够使用共享的私钥读取 userID?

我很抱歉提出这样一个基本问题,但我没能理解应该如何完成。谢谢。

最佳答案

hashlib 模块提供散列函数。虽然这与加密有一定关系,但一旦您对某些数据进行哈希处理,您就无法返回并从哈希结果中获取原始数据。

您可以采用不同的方法来代替加密数据:使用数据的散列和一些 secret 创建一个唯一的签名。

shared_private_key = "ABCDEF"

def create_signature(data):
    return hashlib.sha1(repr(data) + "," + shared_private_key).hexdigest()

def verify_signature(data, signature):
    return signature == create_signature(data)

最后,您将数据和签名发送到网站 2。这样您就可以(大部分)确定没有未经授权的人篡改数据。

关于python - python加密的基础知识w/hashlib sha1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4820043/

相关文章:

python - 单行异常处理

python - 如何解决循环导入

python - 将 CSV 中的字符串交换为日期时间 (Python)

ruby - 使用 Golang 和 Ruby 加密和解密 AES

.net - 从公钥+私钥创建一个 RSAParamaters 对象

security - RSA 签名大小?

python - 在 Python EVE 中自定义资源端点的授权

.net - 可以将 RSA 私钥+公钥转换为 .pfx 文件吗?

Java BigDecimal 行为

c++ - C++ 中的哈希函数 SHA1