Title |
[API] hybrid(APIとPlug-in)使用時にはハングル暗号化が異なる現象 | Product |
API |
---|---|---|---|
Phenomenon |
plug-inでハングル暗号化された値は以下のようです。
select xx1.enc_vachar2_ins('이글로벌',11,'SSN') from dual; vE7o9UDseJeZfcyXGlmrdA== APIからハングルをcoenccharに暗号化した値は以下の通りです。 String encVal = coencchar("한글","SSN",11,null,null,errbyte); encVal = oP9nOKEeo54lyaWPSRTKzA== |
||
Cause |
plug-inでのハングル暗号化時には、Dataをbyteの形で処理するため、APIから違う暗号化の値がリターンされます。
|
||
Solution |
APIからcoencbytes関数を使って暗号化すると、plug-inと同じ値が得られます。
ハングルはjavaで1文字が3byteで処理するため、2番目変数に12を入れて使用します。 String encVal = coencbytes("이글로벌".getBytes(), 12, "SSN", 11, null, null, errbyte); encVal = vE7o9UDseJeZfcyXGlmrdA== 以上の方法でcoencbytes関数を使うと、plug-inのようなhybrid構成ができます。 <関数使用方法> - coencbytes ( Byte[] plainTxt : 暗号化する平文byte array Int length : 暗号化する平文の長さ String item : セキュリティーポリシーItem int act : reserved for Auditing String tblName: ログのための情報、Table名称.NULLの場合はログ情報がない。 String colName: ログのための情報、Column名称.NULLの場合はログ情報がない。 byte[] errcode : エラーコードをリターン リターン値String encOut : 暗号化された値。 呼出の例String plainTxt = “Plaint Text”; byte[] inByte = plainTxt.getBytes(); String encVal = CubeOneAPI.coencbytes(inByte,inByte.length,item,11,"tbl","col",errcode); - codecbyte String inval : 複合化する暗号文 String item : セキュリティーポリシーItem int act : reserved for Auditing String tblName : ログのための情報、Table名称.NULLの場合はログ情報がない。 String colName : ログのための情報、Column名称.NULLの場合はログ情報がない。 byte[] errcode : エラーコードをリターン リターン値byte[] decOut : 複合化されたbyte値。 呼出の例byte[] decByte = CubeOneAPI.codecbyte(encVal,item,10,"tbl","col",errbyte); System.out.println(" decVal = ["+ new String(decByte) +"]"); |