file_write_encrypt

指定したファイルに、指定されたデータを暗号化しながら書き込みます。


taiseiue | 2023-12-16

定義

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

file_write_encrypt(string,bytes,string,number,number,bool)

新しいファイルを作成し、指定されたデータをAES-CBC方式で暗号化しながら書き込みます。 ファイルがすでに存在する場合は先頭から上書きします。

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

対応
AliceScript 3.0
AliceSister 3.0
Losetta 0.10

実装に関する注意

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

説明

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

この関数は、pathが存在しない場合新しいファイルを作成し、存在する場合はそれを上書きします。

この関数では、対象ファイルが存在しない場合はファイルを作成しますが、新しいディレクトリは作成しません。したがって、pathには少なくとも有効なディレクトリまでのパスが含まれる必要があります。

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

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

この関数で暗号化したファイルは、file_read_decryptで復号できます。

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

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

AliceScript
using Alice.IO;

void encrypt_AES256(string source, string destination, string password)
{
    var content = file_read_data(source);
    file_write_encrypt(destination,content,password,256,2048,true);
}

encrypt_AES256("test.txt","test1.txt","password");