No Results
Search Tips:
- Please consider misspellings
- Try different search keywords
Crypto クラス
名前空間
使用方法
Crypto クラスのメソッドは、Force.com のコンテンツのセキュリティを確保したり、Google、Amazon WebServices (AWS) などの外部サービスと統合するために使用できます。
暗号化および復号化の例外
- decrypt
- encrypt
- decryptWithManagedIV
- encryptWithManagedIV
| 例外 | メッセージ | 説明 |
|---|---|---|
| InvalidParameterValue | 暗号化データの初期化ベクトルは解析できません。 | 管理初期化ベクトルを使用している場合で、暗号解読テキストが 16 バイト未満の場合に発生します。 |
| InvalidParameterValue | 無効なアルゴリズム algoName。AES128、AES192、または AES256 である必要があります。 | アルゴリズム名が有効な値の 1 つでない場合に発生します。 |
| InvalidParameterValue | 無効な非公開鍵。size バイトである必要があります。 | 非公開鍵のサイズが指定のアルゴリズムに一致しない場合に発生します。 |
| InvalidParameterValue | 無効な初期化ベクトル。16 バイトである必要があります。 | 初期化ベクトルが 16 バイトでない場合に発生します。 |
| InvalidParameterValue | 無効なデータ。入力データは size バイトです。1048576 バイトの制限を超えています。 | データが 1 MB を超える場合に発生します。復号化の場合、初期化ベクトルヘッダーでは 1048608 バイトが許容されます。さらに、ブロックサイズに合わせて暗号にパディングを追加できます。 |
| NullPointerException | 引数は null (空白) にできません。 | 必要なメソッドの引数の 1 つが null である場合に発生します。 |
| SecurityException | 所定の最終ブロックが適切にパディングされていません。 | 暗号化または復号化でデータが適切にブロック整列されていないか、同様の問題が発生している場合に発生します。 |
| SecurityException | さまざまなメッセージ | 暗号化か復号化時に問題が発生している場合に発生します。 |
Crypto メソッド
Crypto のメソッドは次のとおりです。すべてのメソッドが静的です。
decrypt(String, Blob, Blob, Blob)
署名
public static Blob decrypt(String algorithmName, Blob privateKey, Blob initializationVector, Blob cipherText)
戻り値
型: Blob
使用方法
- AES128
- AES192
- AES256
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);decryptWithManagedIV(String, Blob, Blob)
署名
public static Blob decryptWithManagedIV(String algorithmName, Blob privateKey, Blob IVAndCipherText)
パラメータ
戻り値
型: Blob
使用方法
- AES128
- AES192
- AES256
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(String, Blob, Blob, Blob)
署名
public static Blob encrypt(String algorithmName, Blob privateKey, Blob initializationVector, Blob clearText)
戻り値
型: Blob
使用方法
初期化ベクトルは 128 ビット (16 バイト) である必要があります。サードパーティアプリケーションまたは decrypt メソッドのいずれかを使用して、このメソッドにより暗号化された blob を復号化します。Salesforce で初期化ベクトルが生成されるようにする場合は、encryptWithManagedIV メソッドを使用します。暗号化 Blob の最初の 128 ビット (16 バイト) として格納されます。
- AES128
- AES192
- AES256
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(String, Blob, Blob)
署名
public static Blob encryptWithManagedIV(String algorithmName, Blob privateKey, Blob clearText)
戻り値
型: Blob
使用方法
初期化ベクトルは、暗号化 Blob の最初の 128 ビット (16 バイト) として格納されます。サードパーティアプリケーションまたは decryptWithManagedIV メソッドのいずれかを使用して、このメソッドにより暗号化された blob を復号化します。独自の初期化ベクトルを生成する場合は、encrypt メソッドを使用します。
- AES128
- AES192
- AES256
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);generateDigest(String, Blob)
署名
public static Blob generateDigest(String algorithmName, Blob input)
戻り値
型: Blob
例
1Blob targetBlob = Blob.valueOf('ExampleMD5String');
2Blob hash = Crypto.generateDigest('MD5', targetBlob);generateMac(String, Blob, Blob)
署名
public static Blob generateMac(String algorithmName, Blob input, Blob privateKey)
パラメータ
戻り値
型: Blob
例
1String salt = String.valueOf(Crypto.getRandomInteger());
2String key = 'key';
3Blob data = crypto.generateMac('HmacSHA256',
4Blob.valueOf(salt), Blob.valueOf(key));getRandomInteger()
署名
public static Integer getRandomInteger()
戻り値
型: Integer
例
1Integer randomInt = Crypto.getRandomInteger();getRandomLong()
署名
public static Long getRandomLong()
戻り値
型: Long
例
1Long randomLong = Crypto.getRandomLong();sign(String, Blob, Blob)
署名
public static Blob sign(String algorithmName, Blob input, Blob privateKey)
パラメータ
- algorithmName
- 型: String
- アルゴリズム名。algorithmName 用の有効値は、RSA-SHA1、RSA-SHA256、または RSA です。
RSA-SHA1 は、SHA1 ハッシュの RSA 署名 (非対称鍵のペアを使用) です。
RSA-SHA256 は、SHA256 ハッシュの RSA 署名です。
RSA は、RSA-SHA1 と同じです。
- 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(String, Blob, String)
署名
public static Blob signWithCertificate(String algorithmName, Blob input, String certDevName)
パラメータ
- algorithmName
- 型: String
- アルゴリズム名。algorithmName 用の有効値は、RSA-SHA1、RSA-SHA256、または RSA です。
RSA-SHA1 は、SHA1 ハッシュの RSA 署名 (非対称鍵のペアを使用) です。
RSA-SHA256 は、SHA256 ハッシュの RSA 署名です。
RSA は、RSA-SHA1 と同じです。
- input
- 型: Blob
- 署名するデータ。
- certDevName
- 型: String
- Salesforce 組織の [証明書と鍵の管理] ページで、署名に使用するために保存された証明書の [一意の名前]。
[設定] から [証明書と鍵の管理] ページにアクセスするには、 をクリックします。
戻り値
型: Blob
例
次のスニペットは、data で参照されるコンテンツに署名するメソッドの例です。
1Blob data = Blob.valueOf('12345qwerty');
2System.Crypto.signWithCertificate('RSA-SHA256', data, 'signingCert'); signXML(String, Dom.XmlNode, String, String)
署名
public Void signXML(String algorithmName, Dom.XmlNode node, String idAttributeName, String certDevName)
パラメータ
- algorithmName
- 型: String
- アルゴリズム名。algorithmName 用の有効値は、RSA-SHA1、RSA-SHA256、または RSA です。
RSA-SHA1 は、SHA1 ハッシュの RSA 署名 (非対称鍵のペアを使用) です。
RSA-SHA256 は、SHA256 ハッシュの RSA 署名です。
RSA は、RSA-SHA1 と同じです。
- node
- 型: Dom.XmlNode
- 署名を行い、その署名を挿入する XML ノード。
- idAttributeName
- 型: String
- 参照 ID として使用するノード (XmlNode) の属性の完全名 (名前空間を含む)。null の場合、このメソッドではノードの ID 属性が使用されます。ID 属性が存在しない場合、Salesforce で新しい ID が生成され、この ID を挿入してノードが変更されます。
- certDevName
- 型: String
- Salesforce 組織の [証明書と鍵の管理] ページで、署名に使用するために保存された証明書の [一意の名前]。
[設定] から [証明書と鍵の管理] ページにアクセスするには、 をクリックします。
戻り値
型: Void
例
次のスニペットは、宣言と初期化の例を示します。
1Dom.Document doc = new dom.Document();
2doc.load(...);
3System.Crypto.signXml('RSA-SHA256', doc.getRootElement(), null, 'signingCert');
4return doc.toXmlString();