file_read_decrypt

指定した暗号化されたファイルを読み取り、ファイルの内容を返します。


taiseiue | 2023-12-16

定義

名前空間: Alice.IO
アセンブリ: Losetta.Runtime.dll
ソースコード: Alice.IO.cs

file_read_decrypt(string,bool,string,number,number,bool)

指定したファイルをAES-CBC方式で復号しながら読み取り、読み取った結果のファイルの内容を返します。

AliceScript
namespace Alice.IO;
public void file_read_decrypt(string path, bool fromPackage, string password, number keySize = 128, number iterations = 1024, bool useSHA512 = false);
引数
path 読み込むファイルのパス
fromPackage ファイルを現在のパッケージから読み取る場合はtrue、ファイルシステムから読み取る場合はfalse
password 復号に使用するパスワード
keySize 復号に使用する鍵長。この値は128192256のいずれかである必要があります。既定値は128です。
iterations ハッシュ値の計算のストレッチ回数。この値が大きいほど安全性が向上し、パフォーマンスが低下します。既定値は1024です。
useSHA512 ハッシュ値の計算にSHA512方式を使用する場合はtrueSHA256方式を使用する場合はfalse。既定値はfalseです。

対応
AliceScript 3.0、4
AliceSister 3.0、4
Losetta 0.10、0.11

実装に関する注意

この関数はAliceSisterでは仕様が異なります。 詳しくは説明をご覧ください。

説明

sourcedestinationには、相対パスと絶対パスのどちらを指定することもできます。 相対パスを指定した場合、カレントディレクトリからの相対パスとして解釈します。 パスの大文字と小文字の区別は、環境およびファイルシステムに依存します。たとえば、NTFSでは大文字と小文字は区別されませんが、LFSでは大文字と小文字が区別されます。

この関数は、ファイルを開き、ファイル内のデータをすべて読み取った後ファイルを閉じて結果を返します。

この関数は、指定したファイルをAES-CBC方式で復号しながら読み取り、読み取った結果のファイルの内容を返します。 復号には、AES-CBC方式を使用します。この方式では、初期化ベクトルを使用して同じ入力に対して毎回異なる結果を返します。また、この関数ではブロック暗号のパディングとして、ISO10126方式を使用します。

keySizeには、暗号化時に使用されていた鍵長を指定します。たとえば、256を指定した場合は、AES-256-CBC方式で暗号化してことになります。 また、useSHA512trueにするとハッシュ値の計算にSHA512を使用します。trueを指定した場合は、AES-256-SHA-512方式で暗号化したことに、falseを指定した場合はAES-256-SHA-256のように表現できます。

この関数は、通常file_write_encryptで暗号化したファイルを復号するのに使用します。

AliceSisterでは、useSHA512trueのとき、0x034 NOT_IMPLEMENTED例外がスローされ、useSHA512falseのときSHA1アルゴリズムを使用します。 このため、AliceSisterとその他の実装の間で、この関数の出力するバイナリの互換性はありません。

次の例では、入力したファイルをAES-256-SHA512方式で復号しコピーを作成する関数を作成し、test1.txtの復号されたコピーをtest2.txtに作成します。

AliceScript
using Alice.IO;

void decrypt_AES256(string source, string destination, string password)
{
    var content = file_read_data(source,false,password,256,2048,true);
    file_write_data(destination,content);
}

decrypt_AES256("test1.txt","test2.txt","password");