繁体   English   中英

使用与postfix mysql相同的格式使用python加密密码

[英]encrypt passwords with python in same format as postfix mysql

我正在使用Postfix虚拟邮件服务器。 我有如何使用MySQL添加用户的说明。 我希望找到与MySQL建议相同的Python。 这是因为我希望用户向我发送使用Python生成的加密(散列)密码。

当前要添加用户,它建议这样做:

INSERT INTO 'servermail`.`virtual_users`
(`id`, `domain_id`, `password` , `email`)
VALUES
('1', '1', ENCRYPT('firstpassword', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16))), 'email1@example.com'),
('2', '1', ENCRYPT('secondpassword', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16))), 'email2@example.com');

我想要与MySQL中的ENCRYPT函数等效的Python,该函数输出加密的密码。

ENCRYPT('firstpassword', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16))

您只需运行以下命令即可实现:

import crypt

password = "test_pass"
encrypted_password = crypt.crypt(password, crypt.mksalt(crypt.METHOD_SHA512))

请注意,如果您的MySQL使用base64编码,则还需要在之后进行编码:

import base64

base64_encoded_password = base64.b64encode(str.encode(encrypted_password))

SQL示例: http//sqlfiddle.com/#!9 / 9eecb / 25257/0

没有一个答案给出确切的(MySQL)表达式。 对我有用的是精确模拟SQL:

import crypt
import hashlib
import random

sha1 = hashlib.sha1()
sha1.update(str(random.random))
password = crypt.crypt(plaintext_password, "$6$" + sha1.hexdigest()[-16:])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM