この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

Crypto クラス

ダイジェスト、メッセージ認証コード、署名を作成し、情報の暗号化と復号化を行うためのメソッドを提供します。

名前空間

System

使用方法

Crypto クラスのメソッドは、Lightning プラットフォームのコンテンツのセキュリティを確保したり、Google、Amazon WebServices (AWS) などの外部サービスと統合するために使用できます。

暗号化および復号化の例外

次のメソッドで次の例外が発生する可能性があります。
  • decrypt
  • encrypt
  • decryptWithManagedIV
  • encryptWithManagedIV
例外 メッセージ 説明
InvalidParameterValue 暗号化データの初期化ベクトルは解析できません。 管理初期化ベクトルを使用している場合で、暗号解読テキストが 16 バイト未満の場合に発生します。
InvalidParameterValue 無効なアルゴリズム algoName。AES128、AES192、AES256、AES384、または AES512 である必要があります。 アルゴリズム名が有効な値の 1 つでない場合に発生します。
InvalidParameterValue 無効な非公開鍵。size バイトである必要があります。 非公開鍵のサイズが指定のアルゴリズムに一致しない場合に発生します。
InvalidParameterValue 無効な初期化ベクトル。16 バイトである必要があります。 初期化ベクトルが 16 バイトでない場合に発生します。
InvalidParameterValue 無効なデータ。入力データは size バイトです。1048576 バイトの制限を超えています。 データが 1 MB を超える場合に発生します。復号化の場合、初期化ベクトルヘッダーでは 1048608 バイトが許容されます。さらに、ブロックサイズに合わせて暗号にパディングを追加できます。
NullPointerException 引数は null (空白) にできません。 必要なメソッドの引数の 1 つが null である場合に発生します。
SecurityException 所定の最終ブロックが適切にパディングされていません。 暗号化または復号化でデータが適切にブロック整列されていないか、同様の問題が発生している場合に発生します。
SecurityException さまざまなメッセージ 暗号化か復号化時に問題が発生している場合に発生します。

Crypto のメソッド

Crypto のメソッドは次のとおりです。すべてのメソッドが静的です。

decrypt(algorithmName, privateKey, initializationVector, cipherText)

指定アルゴリズム、非公開鍵、および初期化ベクトルを使用して Blob cipherText を復号化します。このメソッドを使用して、サードパーティアプリケーションまたは encrypt メソッドにより暗号化された blob を復号化します。

署名

public static Blob decrypt(String algorithmName, Blob privateKey, Blob initializationVector, Blob cipherText)

パラメータ

algorithmName
型: String
privateKey
型: Blob
initializationVector
型: Blob
cipherText
型: Blob

戻り値

型: Blob

使用方法

algorithmName の有効値は次のとおりです。
  • AES128
  • AES192
  • AES256
これらのアルゴリズムはすべて、さまざまなサイズの鍵を使用する業界標準の Advanced Encryption Standard (AES) アルゴリズムです。これらのアルゴリズムでは、暗号解読ブロックチェーン (CBC) および PKCS5 パディングを使用します。

privateKey の長さは指定のアルゴリズム (128 ビット、192 ビット、または 256 ビット) に一致する必要があります。長さは、それぞれ、16 バイト、24 バイト、32 バイトです。サードパーティアプリケーションを使用するか、generateAesKey メソッドを使用して、自分用にこの鍵を生成します。

初期化ベクトルは 128 ビット (16 バイト) である必要があります。

1Blob exampleIv = Blob.valueOf('Example of IV123');
2Blob key = Crypto.generateAesKey(128);
3Blob data = Blob.valueOf('Data to be encrypted');
4Blob encrypted = Crypto.encrypt('AES128', key, exampleIv, data);
5
6Blob decrypted = Crypto.decrypt('AES128', key, exampleIv, encrypted);
7String decryptedString = decrypted.toString();
8System.assertEquals('Data to be encrypted', decryptedString);

decryptWithManagedIV(algorithmName, privateKey, IVAndCipherText)

指定アルゴリズム、非公開鍵を使用して Blob IVAndCipherText を復号化します。このメソッドを使用して、サードパーティアプリケーションまたは encryptWithManagedIV メソッドにより暗号化された blob を復号化します。

署名

public static Blob decryptWithManagedIV(String algorithmName, Blob privateKey, Blob IVAndCipherText)

パラメータ

algorithmName
型: String
privateKey
型: Blob
IVAndCipherText
型: Blob
IVAndCipherText の 128 ビット (16 バイト) には初期化ベクトルが含まれている必要があります。

戻り値

型: Blob

使用方法

algorithmName の有効値は次のとおりです。
  • AES128
  • AES192
  • AES256
これらのアルゴリズムはすべて、さまざまなサイズの鍵を使用する業界標準の Advanced Encryption Standard (AES) アルゴリズムです。これらのアルゴリズムでは、暗号解読ブロックチェーン (CBC) および PKCS5 パディングを使用します。

privateKey の長さは指定のアルゴリズム (128 ビット、192 ビット、または 256 ビット) に一致する必要があります。長さは、それぞれ、16 バイト、24 バイト、32 バイトです。サードパーティアプリケーションを使用するか、generateAesKey メソッドを使用して、自分用にこの鍵を生成します。

1Blob key = Crypto.generateAesKey(128);
2Blob data = Blob.valueOf('Data to be encrypted');
3Blob encrypted = Crypto.encryptWithManagedIV('AES128', key, data);
4
5Blob decrypted = Crypto.decryptWithManagedIV('AES128', key, encrypted);
6String decryptedString = decrypted.toString();
7System.assertEquals('Data to be encrypted', decryptedString);

encrypt(algorithmName, privateKey, initializationVector, clearText)

指定アルゴリズム、非公開鍵、および初期化ベクトルを使用して Blob clearText を暗号化します。独自の初期化ベクトルを指定する場合、このメソッドを使用します。

署名

public static Blob encrypt(String algorithmName, Blob privateKey, Blob initializationVector, Blob clearText)

パラメータ

algorithmName
型: String
privateKey
型: Blob
initializationVector
型: Blob
clearText
型: Blob

戻り値

型: Blob

使用方法

初期化ベクトルは 128 ビット (16 バイト) である必要があります。サードパーティアプリケーションまたは decrypt メソッドのいずれかを使用して、このメソッドにより暗号化された blob を復号化します。Salesforce で初期化ベクトルが生成されるようにする場合は、encryptWithManagedIV メソッドを使用します。暗号化 Blob の最初の 128 ビット (16 バイト) として格納されます。

algorithmName の有効値は次のとおりです。
  • AES128
  • AES192
  • AES256
これらのアルゴリズムはすべて、さまざまなサイズの鍵を使用する業界標準の Advanced Encryption Standard (AES) アルゴリズムです。これらのアルゴリズムでは、暗号解読ブロックチェーン (CBC) および PKCS5 パディングを使用します。

privateKey の長さは指定のアルゴリズム (128 ビット、192 ビット、または 256 ビット) に一致する必要があります。長さは、それぞれ、16 バイト、24 バイト、32 バイトです。サードパーティアプリケーションを使用するか、generateAesKey メソッドを使用して、自分用にこの鍵を生成します。

1Blob exampleIv = Blob.valueOf('Example of IV123');
2Blob key = Crypto.generateAesKey(128);
3Blob data = Blob.valueOf('Data to be encrypted');
4Blob encrypted = Crypto.encrypt('AES128', key, exampleIv, data);
5
6Blob decrypted = Crypto.decrypt('AES128', key, exampleIv, encrypted);
7String decryptedString = decrypted.toString();
8System.assertEquals('Data to be encrypted', decryptedString);

encryptWithManagedIV(algorithmName, privateKey, clearText)

指定アルゴリズム、非公開鍵を使用して Blob clearText を暗号化します。Salesforce で初期化ベクトルが生成されるようにする場合は、このメソッドを使用します。

署名

public static Blob encryptWithManagedIV(String algorithmName, Blob privateKey, Blob clearText)

パラメータ

algorithmName
型: String
privateKey
型: Blob
clearText
型: Blob

戻り値

型: Blob

使用方法

初期化ベクトルは、暗号化 Blob の最初の 128 ビット (16 バイト) として格納されます。サードパーティアプリケーションまたは decryptWithManagedIV メソッドのいずれかを使用して、このメソッドにより暗号化された blob を復号化します。独自の初期化ベクトルを生成する場合は、encrypt メソッドを使用します。

algorithmName の有効値は次のとおりです。
  • AES128
  • AES192
  • AES256
これらのアルゴリズムはすべて、さまざまなサイズの鍵を使用する業界標準の Advanced Encryption Standard (AES) アルゴリズムです。これらのアルゴリズムでは、暗号解読ブロックチェーン (CBC) および PKCS5 パディングを使用します。

privateKey の長さは指定のアルゴリズム (128 ビット、192 ビット、または 256 ビット) に一致する必要があります。長さは、それぞれ、16 バイト、24 バイト、32 バイトです。サードパーティアプリケーションを使用するか、generateAesKey メソッドを使用して、自分用にこの鍵を生成します。

1Blob key = Crypto.generateAesKey(128);
2Blob data = Blob.valueOf('Data to be encrypted');
3Blob encrypted = Crypto.encryptWithManagedIV('AES128', key, data);
4
5Blob decrypted = Crypto.decryptWithManagedIV('AES128', key, encrypted);
6String decryptedString = decrypted.toString();
7System.assertEquals('Data to be encrypted', decryptedString);

generateAesKey(size)

Advanced Encryption Standard (AES) 鍵を生成します。

署名

public static Blob generateAesKey(Integer size)

パラメータ

size
型: Integer
ビット単位の鍵のサイズです。有効な値は、次のとおりです。
  • 128
  • 192
  • 256

戻り値

型: Blob

1Blob key = Crypto.generateAesKey(128);

generateDigest(algorithmName, input)

供給されたインプット文字列とアルゴリズム名に基づいた安定した一方向のハッシュダイジェストを計算します。

署名

public static Blob generateDigest(String algorithmName, Blob input)

パラメータ

algorithmName
型: String
algorithmName の有効値は次のとおりです。
  • MD5
  • SHA1
  • SHA3-256
  • SHA3-384
  • SHA3-512
  • SHA-256
  • SHA-512
input
型: Blob

戻り値

型: Blob

1Blob targetBlob = Blob.valueOf('ExampleMD5String');
2Blob hash = Crypto.generateDigest('MD5', targetBlob);

generateMac(algorithmName, input, privateKey)

秘密鍵と指定アルゴリズムを使用して、インプット文字列用のメッセージ認証コード (MAC) を計算します。

署名

public static Blob generateMac(String algorithmName, Blob input, Blob privateKey)

パラメータ

algorithmName
型: String
algorithmName の有効値は次のとおりです。
  • hmacMD5
  • hmacSHA1
  • hmacSHA256
  • hmacSHA512
input
型: Blob
privateKey
型: Blob
privateKey の値は復号化形式である必要はありません。 値は 4 KB を超えることはできません。

戻り値

型: Blob

1String salt = String.valueOf(Crypto.getRandomInteger());
2String key = 'key';
3Blob data = crypto.generateMac('HmacSHA256',
4Blob.valueOf(salt), Blob.valueOf(key));

getRandomInteger()

ランダムな integer を返します。

署名

public static Integer getRandomInteger()

戻り値

型: Integer

1Integer randomInt = Crypto.getRandomInteger();

getRandomLong()

ランダムな long を返します。

署名

public static Long getRandomLong()

戻り値

型: Long

1Long randomLong = Crypto.getRandomLong();

sign(algorithmName, input, privateKey)

指定アルゴリズムと供給された秘密鍵を使用して、インプット文字列用の固有のデジタル署名を計算します。

署名

public static Blob sign(String algorithmName, Blob input, Blob privateKey)

パラメータ

algorithmName
型: String
アルゴリズム名。algorithmName に有効な値は、RSARSA-SHA1RSA-SHA256RSA-SHA384RSA-SHA512ECDSA-SHA256ECDSA-SHA384ECDSA-SHA512 です。

RSA-SHA1 は、SHA1 ハッシュの RSA 署名 (非対称鍵のペアを使用) です。

RSA-SHA256 は、SHA256 ハッシュの RSA 署名です。

RSA-SHA384 は、SHA384 ハッシュの RSA 署名です。

RSA-SHA512 は、SHA512 ハッシュの RSA 署名です。

RSA は、RSA-SHA1 と同じです。

ECDSA-SHA256 は、SHA256 ハッシュの ECDSA 署名です。

ECDSA-SHA384 は、SHA384 ハッシュの ECDSA 署名です。

ECDSA-SHA512 は、SHA512 ハッシュの ECDSA 署名です。

input
型: Blob
署名するデータ。
privateKey
型: Blob
privateKey の値は EncodingUtilbase64Decode メソッドを使用して復号化される必要があり、RSA の PKCS #8 (1.2) Private-Key Information Syntax Standard 形式でなければなりません。値は 4 KB を超えることはできません。

戻り値

型: Blob

次のスニペットでは、sign メソッドをコールする方法を示します。

1String algorithmName = 'RSA';
2String key = '';
3Blob privateKey = EncodingUtil.base64Decode(key);
4Blob input = Blob.valueOf('12345qwerty');
5Crypto.sign(algorithmName, input, privateKey);

signWithCertificate(algorithmName, input, certDevName)

指定されたアルゴリズムと指定された証明書と鍵のペアを使用して、入力文字列用の一意のデジタル署名を計算します。

署名

public static Blob signWithCertificate(String algorithmName, Blob input, String certDevName)

パラメータ

algorithmName
型: String
アルゴリズム名。algorithmName の有効な値は RSARSA-SHA1RSA-SHA256RSA-SHA384RSA-SHA512ECDSA-SHA256ECDSA-SHA384、および ECDSA-SHA512 です。

RSA-SHA1 は、SHA1 ハッシュの RSA 署名 (非対称鍵のペアを使用) です。

RSA-SHA256 は、SHA256 ハッシュの RSA 署名です。

RSA-SHA384 は、SHA384 ハッシュの RSA 署名です。

RSA-SHA512 は、SHA512 ハッシュの RSA 署名です。

RSA は、RSA-SHA1 と同じです。

ECDSA-SHA256 は、SHA256 ハッシュの ECDSA 署名です。

ECDSA-SHA384 は、SHA384 ハッシュの ECDSA 署名です。

ECDSA-SHA512 は、SHA512 ハッシュの ECDSA 署名です。

input
型: Blob
署名するデータ。
certDevName
型: String
Salesforce 組織の [証明書と鍵の管理] ページで、署名に使用するために保存された証明書の一意の名前

[証明書と鍵の管理] ページにアクセスするには、[設定] から、[クイック検索] ボックスに「証明書と鍵の管理」と入力し、[証明書と鍵の管理] を選択します。

戻り値

型: Blob

次のスニペットは、data で参照されるコンテンツに署名するメソッドの例です。

1Blob data = Blob.valueOf('12345qwerty');
2System.Crypto.signWithCertificate('RSA-SHA512', data, 'signingCert')

signXML(algorithmName, node, idAttributeName, certDevName)

署名を XML ドキュメントにエンベロープします。

署名

public Void signXML(String algorithmName, Dom.XmlNode node, String idAttributeName, String certDevName)

パラメータ

algorithmName
型: String
RSA 暗号化アルゴリズム名。有効な名前は、RSARSA-SHA1RSA-SHA256RSA-SHA384RSA-SHA512ECDSA-SHA256ECDSA-SHA384ECDSA-SHA512 です。

RSA-SHA1 は、SHA1 ハッシュの RSA 署名 (非対称鍵のペアを使用) です。

RSA-SHA256 は、SHA256 ハッシュの RSA 署名です。

RSA-SHA384 は、SHA384 ハッシュの RSA 署名です。

RSA-SHA512 は、SHA512 ハッシュの RSA 署名です。

RSA は、RSA-SHA1 と同じです。

ECDSA-SHA256 は、SHA256 ハッシュの ECDSA 署名です。

ECDSA-SHA384 は、SHA384 ハッシュの ECDSA 署名です。

ECDSA-SHA512 は、SHA512 ハッシュの ECDSA 署名です。

node
型: Dom.XmlNode
署名を行い、その署名を挿入する XML ノード。
idAttributeName
型: String
参照 ID として使用するノード (XmlNode) の属性の完全名 (名前空間を含む)。null の場合、このメソッドではノードの ID 属性が使用されます。ID 属性が存在しない場合、Salesforce で新しい ID が生成され、ノードに追加されます。
certDevName
型: String
Salesforce 組織の [証明書と鍵の管理] ページで、署名に使用するために保存された証明書の一意の名前。

[証明書と鍵の管理] ページにアクセスするには、[設定] から、[クイック検索] ボックスに「証明書と鍵の管理」と入力し、[証明書と鍵の管理] を選択します。

戻り値

型: void

次に、宣言と初期化の例を示します。

1Dom.Document doc = new dom.Document();
2doc.load(...);
3System.Crypto.signXml('RSA-SHA512', doc.getRootElement(), null, 'signingCert')
4return doc.toXmlString()

signXML(algorithmName, node, idAttributeName, certDevName, refChild)

署名エンベロープを指定された子ノードの前に挿入します。

署名

public static void signXml(String algorithmName, Dom.XmlNode node, String idAttributeName, String certDevName, Dom.XmlNode refChild)

パラメータ

algorithmName
型: String
RSA 暗号化アルゴリズム名。有効な名前は、RSARSA-SHA1RSA-SHA256RSA-SHA384RSA-SHA512ECDSA-SHA256ECDSA-SHA384ECDSA-SHA512 です。

RSA-SHA1 は、SHA1 ハッシュの RSA 署名 (非対称鍵のペアを使用) です。

RSA-SHA256 は、SHA256 ハッシュの RSA 署名です。

RSA-SHA384 は、SHA384 ハッシュの RSA 署名です。

RSA-SHA512 は、SHA512 ハッシュの RSA 署名です。

RSA は、RSA-SHA1 と同じです。

ECDSA-SHA256 は、SHA256 ハッシュの ECDSA 署名です。

ECDSA-SHA384 は、SHA384 ハッシュの ECDSA 署名です。

ECDSA-SHA512 は、SHA512 ハッシュの ECDSA 署名です。

node
型: Dom.XmlNode
署名を行い、その署名を挿入する XML ノード。
idAttributeName
型: String
参照 ID として使用するノード (XmlNode) の属性の完全名 (名前空間を含む)。null の場合、このメソッドではノードの ID 属性が使用されます。ID 属性が存在しない場合、Salesforce で新しい ID が生成され、ノードに追加されます。
certDevName
型: String
Salesforce 組織の [証明書と鍵の管理] ページで、署名に使用するために保存された証明書の一意の名前。

[証明書と鍵の管理] ページにアクセスするには、[設定] から、[クイック検索] ボックスに「証明書と鍵の管理」と入力し、[証明書と鍵の管理] を選択します。

refChild
Dom.XmlNode
その前に署名が挿入される XML ノード。refChildnull の場合、署名は最後に追加されます。

戻り値

型: Void

verify(String algorithmName, Blob data, Blob signature, Blob publicKey)

指定アルゴリズムと供給された公開鍵を使用して、Blob data のデジタル署名を確認します。このメソッドを使用して、サードパーティアプリケーションまたは sign メソッドを使用して作成されたデジタル署名により署名された Blob を確認します。

署名

public static Blob verify(String algorithmName, Blob data, Blob signature, Blob publicKey)

パラメータ

algorithmName
型: String
アルゴリズム名。algorithmName の有効な値は RSARSA-SHA1RSA-SHA256RSA-SHA384RSA-SHA512ECDSA-SHA256ECDSA-SHA384、および ECDSA-SHA512 です。

RSA-SHA1 は、SHA1 ハッシュの RSA 署名 (非対称鍵のペアを使用) です。

RSA-SHA256 は、SHA256 ハッシュの RSA 署名です。

RSA-SHA384 は、SHA384 ハッシュの RSA 署名です。

RSA-SHA512 は、SHA512 ハッシュの RSA 署名です。

RSA は、RSA-SHA1 と同じです。

ECDSA-SHA256 は、SHA256 ハッシュの ECDSA 署名です。

ECDSA-SHA384 は、SHA384 ハッシュの ECDSA 署名です。

ECDSA-SHA512 は、SHA512 ハッシュの ECDSA 署名です。

data
型: Blob
署名するデータ。
signature
型:
Blob
RSA 署名。
publicKey
型: Blob
publicKey の値は EncodingUtilbase64Decode メソッドを使用して復号化される必要があり、X.509 標準の形式でなければなりません。

戻り値

型: Blob

1String algorithmName = 'RSA';
2String privateKey = '';
3String publicKey = '';
4Blob privateKey = EncodingUtil.base64Decode(privateKey);
5Blob publicKey = EncodingUtil.base64Decode(publicKey);
6Blob input = Blob.valueOf('12345qwerty');
7Blob signature = Crypto.sign(algorithmName, input, privateKey);
8Boolean verified = Crypto.verify(algorithmName, input, signature, publicKey);

verify(String algorithmName, Blob data, Blob signature, String certDevName)

指定アルゴリズムと、certDevName に関連付けられた公開鍵を使用して、Blob data のデジタル署名を確認します。このメソッドを使用して、サードパーティアプリケーションまたは sign メソッドを使用して作成されたデジタル署名により署名された Blob を確認します。

署名

public static Blob verify(String algorithmName, Blob data, Blob signature, String certDevName)

パラメータ

algorithmName
型: String
アルゴリズム名。algorithmName の有効な値は RSARSA-SHA1RSA-SHA256RSA-SHA384RSA-SHA512ECDSA-SHA256ECDSA-SHA384、および ECDSA-SHA512 です。

RSA-SHA1 は、SHA1 ハッシュの RSA 署名 (非対称鍵のペアを使用) です。

RSA-SHA256 は、SHA256 ハッシュの RSA 署名です。

RSA-SHA384 は、SHA384 ハッシュの RSA 署名です。

RSA-SHA512 は、SHA512 ハッシュの RSA 署名です。

RSA は、RSA-SHA1 と同じです。

ECDSA-SHA256 は、SHA256 ハッシュの ECDSA 署名です。

ECDSA-SHA384 は、SHA384 ハッシュの ECDSA 署名です。

ECDSA-SHA512 は、SHA512 ハッシュの ECDSA 署名です。

data
型: Blob
署名するデータ。
signature
型:
Blob
RSA 署名。
certDevName
型: String
Salesforce 組織の [証明書と鍵の管理] ページで、署名に使用するために保存された証明書の [一意の名前]

[証明書と鍵の管理] ページにアクセスするには、[設定] から、[クイック検索] ボックスに「証明書と鍵の管理」と入力し、[証明書と鍵の管理] を選択します。

戻り値

型: Blob

1Blob data = Blob.valueOf('12345qwerty'); 
2Blob signature = Crypto.signWithCertificate('RSA-SHA256', data, 'signingCert');
3Boolean verified = Crypto.verify('RSA-SHA512', data, signature, 'signingCert');

verifyHMac(String algorithmName, Blob input, Blob privateKey, Blob macToVerify)

指定アルゴリズム、入力データ、非公開鍵、mac を使用して、Blob data の HMAC 署名を確認します。このメソッドを使用して、サードパーティアプリケーションまたは sign メソッドを使用して作成されたデジタル署名により署名された Blob を確認します。

署名

public static Blob verifyHMac(String algorithmName, Blob input, Blob privateKey, Blob macToVerify)

パラメータ

algorithmName
型: String
algorithmName の有効値は次のとおりです。
  • hmacMD5
  • hmacSHA1
  • hmacSHA256
  • hmacSHA512
data
型: Blob
署名するデータ。
privateKey
型: Blob
privateKey の値は復号化形式である必要はありません。値は 4 KB を超えることはできません。
hmacToVerify
型: Blob
mac の値は、提供された非公開鍵、データ、およびアルゴリズムと照合する必要があります。

戻り値

型: Boolean

1String salt = String.valueOf(Crypto.getRandomInteger());
2String key = 'key';
3Blob mac = Crypto.generateMac('HmacSHA256', Blob.valueOf(salt), Blob.valueOf(key));
4Boolean verified = Crypto.verifyHMac('HmacSHA256', Blob.valueOf(salt), Blob.valueOf(key), mac);