在Oracle sql中编译java源时,Base64会出错

时间:2016-02-19 08:39:47

标签: java grails oracle11g sha256 hmac

我能够创建一个函数来比较我的网络项目(Grails project)和sql query结果之间的哈希数据。

根据此link

  • 我将groovy代码应用到groovy类中,然后我得到了结果。
  • 在查询中,首先我编译java source,然后编译compile function,然后调用函数。

然而,在尝试import org.apache.commons.codec.binary.Base64时遇到了麻烦。 代码如下:

create or replace and compile java source named testhmacSHA256 as
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.binary.Base64;
public class testhmacSHA256 {
  public static String encrypt(String secret, String message) { 
  try {
      Mac sha256_HMAC = Mac.getInstance("HmacSHA256");
     SecretKeySpec secret_key = new SecretKeySpec(secret.getBytes(), "HmacSHA256");
     sha256_HMAC.init(secret_key);

     String hash = Base64.encodeBase64String(sha256_HMAC.doFinal(message.getBytes()));
     return hash;
    }
    catch (Exception e){
     System.out.println("Error");
    }
  }
}
/

显然,无法找到Base64。 所以我的问题是,有没有其他方法可以导入base64,或只是在hmac-sha 256中使用oracle sql 11g的方法。

任何帮助将不胜感激。感谢。

1 个答案:

答案 0 :(得分:0)

打开 conf / BuildConfig.groovy ,并在依赖部分添加:

build "commons-codec:commons-codec:1.10"

它应该:

dependency {
    //... another dependiences if any
    build "commons-codec:commons-codec:1.10"
} 

刷新依赖项并重新编译项目。

如果您有任何问题,请粘贴您的conf / BuildConfig.groovy源文件。