関数用のAPIとライブラリ
この記事では、関数用のAPIとライブラリについて説明します。
関数では以下のAPIとライブラリを使用できます:
- Crypto-ES.js
- TweetNaCl.js
- JavaScript Console API
Crypto-ES.js
Crypto-ES.jsは、ハッシュ化、エンコーディング、暗号アルゴリズムを提供する暗号化アルゴリズムのライブラリです。詳細については、Crypto-ESを参照してください。
以下の例は、テキストの暗号化と復号化の方法を示しています:
import CryptoES from 'crypto-es';
var encrypted = CryptoES.AES.encrypt("Message", "Secret Passphrase");
console.log(encrypted);
var decrypted = CryptoES.AES.decrypt(encrypted, "Secret Passphrase");
console.log(CryptoES.enc.Utf8.stringify(decrypted));
AES暗号化のGCMモード
Crypto-ESライブラリは、AES暗号化のGCMモードをサポートしています。以下の例は、AES GCMモードを使用してテキストを暗号化および復号化する方法を示しています:
// crypto-es libの一部としてインポート
import CryptoES from "crypto-es";
// コンピューティングリソースを節約するために名前付きエクスポートとしてインポート(全ライブラリが上記のようにインポートされている場合は機能しません)
import { GCM } from "crypto-es/lib/mode-gcm.js";
// 暗号化
const msg = "Original Message";
const key = CryptoES.enc.Hex.parse("0123456789ABCDEF11113333555577770123456789ABCDEF1111333355557777");
const iv = CryptoES.enc.Hex.parse("0102030405060708090A0B0C");
const authData = CryptoES.enc.Utf8.parse("Additional authentication data");
const encrypted = CryptoES.AES.encrypt(msg, key, { iv, mode: CryptoES.mode.GCM });
const authTag = CryptoES.mode.GCM.mac(CryptoES.algo.AES, key, encrypted.iv, authData, encrypted.ciphertext, 16);
const enveloped = encrypted.iv.toString() + encrypted.ciphertext.toString() + authTag.toString();
console.log("encrypted: ", encrypted);
console.log("authTag: ", authTag);
console.log("enveloped: ", enveloped);
// 復号化
const decrypted = CryptoES.AES.decrypt(encrypted, key, { iv, mode: CryptoES.mode.GCM });
console.log("decrypted: ", decrypted.toString(CryptoES.enc.Utf8));
SHA3アルゴリズム
crypto-ESライブラリは、オリジナルのSHA3アルゴリズムを提供しています。以下の例は、SHA3アルゴリズムの使用方法を示しています:
import { SHA3 } from "crypto-es/lib/sha3-original.js";
const hash = SHA3("Original Message", { outputLength: 256 });
console.log("hash: ", hash);
CRC32アルゴリズム
crypto-ESライブラリは、CRC32アルゴリズムを提供しています。各CRC32関数は、データを表す引数と、オプションの2番目の引数(ローリングCRCの開始シード)を取ります。戻り値は符号付き32ビット整数です。サポートされている関数は次のとおりです:
CRC32.buf(byte array[, seed])
– 最初の引数は8ビット符号なし整数のシーケンス(Uint8Array
またはバイトの配列)です。CRC32.bstr(binary string[, seed])
– 最初の引数はバイナリ文字列で、バイトi
はUCS-2文字の低バイトです:str.charCodeAt(i) & 0xFF
CRC32.str(string[, seed])
– 最初の引数は標準的なJS文字列で、UTF-8エンコーディングのハッシュを計算します。
以下の例は、CRC32アルゴリズムの使用方法を示しています:
import CRC32 from "crypto-es/lib/crc32.js";
const hash = CRC32.str("Original Message");
console.log("hex value: ", (hash >>> 0).toString(16));
TweetNaCl.js
TweetNaClは、秘密鍵認証暗号化、公開鍵認証暗号化、ハッシュ化、公開鍵署名を実装する暗号ライブラリです。TweetNaClライブラリは、イベント関数と訪問者関数のみで利用可能です。
イベント関数または訪問者関数にTweetNaCl.jsモジュールを次のようにインポートします:
import nacl from 'tweetnacl';
詳細については、NPM TweetNaCl.jsを参照してください。
JavaScript console API
JavaScriptのコンソール関数を使用して、メッセージとエラーをログに書き込みます。
console.log()
, console.info(),
および console.debug()
ログメッセージは情報出力ストリームに行きます。console.warn()
および console.error()
ログメッセージはエラー出力ストリームに行きます。
情報とエラーの出力ストリームはそれぞれ関数の呼び出し毎に10Kbのデータに制限されています。ログメッセージがこの制限を超えると、ログファイルには最初の10Kbのデータが含まれ、次のメッセージで終わります:
出力が大きすぎて切り捨てられました。
コンソールオブジェクトは、関数でサポートされている他のメソッドを提供します。詳細については、コンソールオブジェクトのJavaScript 仕様を参照してください。以下の追加のコンソールメソッドがサポートされています:
assert()
count()
countReset()
group()
groupEnd()
time()
timeEnd()
timeLog()
Console APIの出力
ほとんどのコンソール関数の出力は、ログ表示のメッセージセクションに表示されます。例えば:
メッセージ:
関数開始
console.warn()
および console.error()
の出力は、メッセージ出力の下のエラーセクションに表示されます:
エラー:
警告 - ページが見つかりません
エラー - 変数が定義されていません
console.assert()
関数がEventStreamでトリガーされ、console.assert()
が次のように呼び出された場合:
console.assert(visitor, "visitor not defined");
visitor
オブジェクトは、トリガーがAudienceStreamの場合にのみ定義されるため、アサーションは偽であり、出力は次のようになります:
アサーションに失敗しました:visitorが定義されていません
console.group()とconsole.groupEnd()
console.group()
とconsole.groupEnd()
は、ログに関連メッセージをフォーマットするために使用できます。console.group()
に続くconsole.log()
メッセージはログにインデントされます。インデントはconsole.groupEnd()
が呼び出された後に終了します。
関数コードに以下の内容が含まれている場合:
console.group("Event info:");
console.log("Account: ", event.account);
console.log("Visitor ID: ", event.visitor_id);
console.groupEnd();
出力は次のようになります:
イベント情報:
アカウント: Acme Mfg
訪問者ID: 017407a1d9e50019633c3cea732703079011607100bd6
console.time()とconsole.timeLog()
関数がconsole.time()
を呼び出すと、出力はありません。console.time()
がその文字列で呼び出された時間が記録されます。console.timeLog()
が同じ文字列で呼び出されると、出力は指定された文字列に続く経過時間です:
現在の時間: : 1ms
関数がconsole.timeEnd()
を呼び出した後、console.time()
が再度呼び出されるまでconsole.timeLog()
を呼び出すことはできません。
console.count()とconsole.countReset()
console.count()
が同じ文字列で呼び出されるたびに、カウントが増加します。console.count()
の出力は、文字列に続くカウントです。console.count("Current count: ");
が2回呼び出された場合、出力は次のようになります:
現在のカウント: : 1
現在のカウント: : 2
console.countReset()
は、指定された文字列のカウントをゼロにリセットします。
最終更新日 :: 2024年April月25日