如何使用.dll或.SO导入AWS Redshift中的库

问题描述

我们想使用与其他数据源(如网站,移动应用等)相同的算法对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 (将#修改为@)