问题描述
我们想使用与其他数据源(如网站,移动应用等)相同的算法对Redshift中的电子邮件字段进行加密。我在Redshift上尝试了python udf代码,但失败并显示错误
文件“ C:\ Python27 \ lib \ Crypto \ Cipher \ AES.py”,第50行,在 从Crypto.Cipher导入_AES ImportError:无法导入名称_AES
我进一步研究发现,加密库具有_AES文件,但是具有.so扩展名,这是其无法在redshift中工作的原因
CREATE OR REPLACE LIBRARY Crypto
LANGUAGE plpythonu
FROM 'https://github.com/ag1693/redshift-test/blob/master/Crypto.zip?raw=true'
;
CREATE OR REPLACE LIBRARY bcrypt
LANGUAGE plpythonu
FROM 'https://github.com/ag1693/redshift-test/blob/master/bcrypt.zip?raw=true'
;
create or replace function aes_mot_enc(val varchar(max))
returns varchar
stable as $$
from Crypto.Cipher import AES
import base64
import hashlib
import bcrypt
private_key = ‘xxxx
iv = ‘xxxxxxxxxx’
cipher = AES.new(private_key.encode('utf-8'),AES.MODE_CBC,iv.encode('utf-8'))
return base64.b64encode(cipher.encrypt(str(val).encode()))
$$ LANGUAGE plpythonu ;
select aes_mot_enc(val) as val
From
(
Select ‘Ashish’ as val
)
有什么建议吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)