2013-10-04 64 views
0

我使用杰出的JASYPT插件来加密和解密某些数据库列。很棒。但我有一个用于简单字符串的加密/解密的用例,它不会去数据库,我很乐意使用我已经设置的Jasypt配置与我的秘密和摘要来完成它,而不是引入另一个插件或加密配置,但似乎该文档仅显示如何将其用于GORM和域类。是否可以在GORM层之外使用Grails Jasypt插件进行简单的字符串加密和解密?

https://bitbucket.org/tednaleid/grails-jasypt/wiki/Home

理想我让事情变得非常简单这样

String encrypted = myJasyptConfig().encrypt(myString) 
//then later 
String decrypted = myJasyptConfig().decrypt(encrypted) 

可能吗?

+0

这不是用于密码存储或类似的东西,对吧? – ntoskrnl

+0

不与密码存储无关。 – Peter

+0

但是,这不是一回事 - 换句话说,不是解密存储的密文并将其与给定的明文进行比较,为什么不加密给定的明文并将结果与​​存储的密文进行比较?这样你可以使用单向散列函数而不是可逆加密方法。 – ntoskrnl

回答

1

该插件具有jasypt依赖关系,它们被导出到应用程序(默认情况下,插件依赖项可以通过应用程序传递给应用程序)。

我认为你可以根据你的配置使用StandardPBEStringEncryptor

在应用程序的示例控制器(注入grailsApplication)中添加以下方法作为操作并将其打开。

def standard(){ 
    def jasyptConfig = grailsApplication.config.jasypt 
    org.jasypt.encryption.pbe.StandardPBEStringEncryptor stringEncryptor = 
      new org.jasypt.encryption.pbe.StandardPBEStringEncryptor(jasyptConfig) 

    def encrypted = stringEncryptor.encrypt("Hello World") 
    def decrypted = stringEncryptor.decrypt(encrypted) 

    render([encrypted: encrypted, decrypted: decrypted] as JSON) 
} 

或只是运行在grails console上述方法。

+0

像单元测试之外的魅力一样工作。看起来配置好的jasypt提供程序没有连接到java安全框架进行单元测试 - 这不是一个大问题,因为我可以用metaclass覆盖测试的加密方法,但是如果你有一个想法如何让你的解决方案在单元测试中工作,让我知道 – Peter

+0

@pete你可以添加你尝试过的单元测试吗? – dmahapatro