共通鍵暗号方式

Curlで共通鍵暗号方式を利用して、暗号化・復号化を実現するには、EncryptStream(暗号)、DecryptStream(複合)クラスを利用します。(これらを利用する際は、CURL.CRYPTO.CIPHERパッケージをインポートしてください。) Curlでは共通鍵暗号方式のアルゴリズムとして、トリプルDES, rc2, rc4、AES AES-128、AES-192、AES-256 AESはVer.8より提供開始 }をサポートしています。詳細はAPIドキュメントのAlgorithmクラスを参照ください。このアルゴリズムを共通鍵のSessionKeyクラスに指定し、EncryptStreamを利用して暗号化します。詳細は以下のサンプルを御覧下さい。

※ Curl RTEの利用者は本暗号化機能を変更して利用することはできません。また、本暗号化機能を使用する際に、本サイトのサンプルや、製品ドキュメントによって、利用することが可能です。

{import * from CURL.CRYPTO.CIPHER}

{define-proc public inline {encrypt
algorithm:Algorithm = Algorithm.des3,
common-key:{Array-of byte},
message:{Array-of byte},
out:ByteOutputStream
}:void
{with-open-streams enc-out =
{TranscodingTextOutputStream
{EncryptStream
out,
{SessionKey.from-bytes algorithm, common-key}
},
CharEncoding.utf8,
false
}
do
{for i:int = 0 below message.size do
{enc-out.write-one message[i] asa byte}
}
}
}

{define-proc public inline {decrypt
algorithm:Algorithm = Algorithm.des3,
common-key:{Array-of byte},
in:ByteInputStream
}:String
def buf = {StringBuf}
{with-open-streams dec-in =
{TranscodingTextInputStream
{DecryptStream
in,
{SessionKey.from-bytes algorithm, common-key}
}
}
do
{for b in {dec-in.read} do
{buf.append b asa char}
}
{return {buf.to-String}}
}
}

{do
def secret-file = “secret-file”
def key = {{Array-of byte}
1,2,3,4,0,0, 0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0,0
}

|| 暗号
{encrypt
key, ||キー
{{Array-of byte} 50, 51, 52},
{write-open-byte {url secret-file}}
}

{decrypt
key, ||キー
{read-open-byte {url secret-file}}
}
}


Ver.8よりAESを指定することができます。

Algorithm.aes-128-cbc、 Algorithm.aes-192-cbc、 Algorithm.aes-256-cbc

上記サンプルにてアルゴリズム、キー長を変更することにより確認することができます。


ちなみに、以下の拡張ライブラリを利用するとさらに簡単に暗号化できます。

拡張ライブラリ(暗号・複合API)