def post_share(): import random, string from config import domain_name, sy_public_key user = current_user fid = request.form['fid'] choice = request.form['choice'] nonce = ''.join(random.SystemRandom().choice(string.ascii_letters + string.digits) for _ in range(8)) ShareKey = secret.new_symmetric_key() sym_key = secret.new_symmetric_key() # 先对称解密再用新的分享密钥对称加密 Share.decrypt_and_encrypt(fid, user, sym_key) # 分享码对对称密钥加密 enc_key = secret.symmetric_encrypt(ShareKey, sym_key) # 慢速哈希分享码 hashShareKey = argon2.using(rounds=256, memory_cost=1024).hash(ShareKey) # 使用服务器公钥加密分享码 enc_ShareKey = secret.encrypt(bytes.fromhex(sy_public_key), ShareKey) sid = Share.add_share(fid, hashShareKey, enc_ShareKey, nonce, enc_key) # 向指定用户发送分享消息 choice = choice.split(',') for u in choice: Message.create_msg(User.get_by(mail=u).usrid, user.usrname, sid, File.get_by(fileid=fid).filename) return '分享成功!'