値:
RSA
- RSA で暗号化できるデータは、鍵サイズ (2048 ビット = 256 バイト) からパディングを差し引いた長さが最大です。
- 入力テキストが長すぎる場合は、実行時にタイプ DataLengthException の例外「この暗号には長すぎるメッセージを処理しようとしました」がスローされます。
- 暗号化したいデータ量が多い場合は、次の方法が可能です:
Generate a 256-bit random keystring K
Encrypt your data with AES-CBC with K
Encrypt K with RSA
Send both to the other side
出典
値:
NOPADDING、OAEPPADDING、PCKS1PADDING、ISO97961PADDING
非対称ブロックアルゴリズムを使用してテキストの暗号化および復号化を行います。
両方向での使用が可能であり、秘密鍵で暗号化を行って公開鍵で復号化するか、公開鍵で暗号化を行って秘密鍵で復号化できます。
有効な鍵形式
- Base64 でエンコードされた PKCS8 形式の鍵 (.pem 拡張子)。公開鍵、秘密鍵、証明書またはその両方を含めることができます。
- 暗号化された .pem ファイルは使用できません。
- 暗号化された PKCS8 秘密鍵は GeneXus 17 Upgrade 2 以降で使用できます。
- .key 拡張子のファイルは GeneXus 16 Upgrade 11 以降でサポートされています。
- DER 証明書 (.crt または .cer 拡張子)。公開鍵のみ含みます。
- PKCS12 の証明書またはキーストア (.p12、.pfx、.jks のいずれかの拡張子)。秘密鍵のみ、または両方を含みます。
- JKS 形式 (JavaKeyStore) は、Java の実装にのみ利用できます。
- Java および .NET の両方の実装に対して、PKCS12 証明書のファイルのパスワードが必要です。
- .NET の実装環境では PKCS12 エイリアスは使用されません。証明書チェーンの最初の証明書の公開鍵と、ファイル上の最初の既定の秘密鍵が使用されます。
- .pkcs12 拡張子のファイルは、GeneXus 16 Upgrade 11 以降でサポートされています。
- すべての証明書が X509 標準を実装する必要があります。
- 証明書外の公開鍵は、PKCS8 形式が認められます。GeneXus 18 Upgrade 4 以降でサポートされています。
AsymmetricCipher.DoEncrypt_WithPrivateKey(hashAlgorithm, asymmetricEncryptionPadding, key, plainText)
- hashAlgorithm の入力: HashAlgorithm ドメインの値
- asymmetricEncryptionPadding の入力: AsymmetricEncryptionPadding ドメインの値
- privateKey の入力: PrivateKey タイプ、事前ロードされた秘密鍵
- plainText の入力: VarChar(9999)。CryptographyEncodingUtil が使用されない限り、既定で UTF-8 が使用されます。
- 戻り値: VarChar(9999)、Base64 でエンコード
指定のパラメーターでプレーンテキストを暗号化します。
例:
&key.Load("C:\\certificates\\key.pem")
&hash = HashAlgorithm.SHA256
&padding = AsymmetricEncryptionPadding.PCKS1PADDING
&plainText = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. In aliquet ultrices dolor a consectetur."
&encrypted = &AsymmetricCipher.DoEncrypt_WithPrivateKey(&hash, &padding, &key, &plainText)
このメソッドは
GeneXus 18 Upgrade 4 以降で利用可能です。
AsymmetricCipher.DoEncrypt_WithPublicKey(hashAlgorithm, asymmetricEncryptionPadding, certificate, plainText)
- hashAlgorithm の入力: HashAlgorithm ドメインの値
- asymmetricEncryptionPadding の入力: AsymmetricEncryptionPadding ドメインの値
- certificate の入力: Certificate タイプ、事前ロードされた公開鍵
- plainText の入力: VarChar(9999)。CryptographyEncodingUtil が使用されない限り、既定で UTF-8 が使用されます。
- 戻り値: VarChar(9999)、Base64 でエンコード
指定のパラメーターでプレーンテキストを暗号化します。
例:
&certificate.Load("C:\\certificates\\certificate.pem")
&hash = HashAlgorithm.SHA256
&padding = AsymmetricEncryptionPadding.PCKS1PADDING
&plainText = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. In aliquet ultrices dolor a consectetur."
&encrypted = &AsymmetricCipher.DoEncrypt_WithPublicKey(&hash, &padding, &certificate, &plainText)
AsymmetricCipher.DoEncrypt_WithPublicKey(hashAlgorithm, asymmetricEncryptionPadding, publicKey, plainText)
- hashAlgorithm の入力: HashAlgorithm ドメインの値
- asymmetricEncryptionPadding の入力: AsymmetricEncryptionPadding ドメインの値
- publicKey の入力: PublicKey タイプ、事前ロードされた公開鍵
- plainText の入力: VarChar(9999)。CryptographyEncodingUtil が使用されない限り、既定で UTF-8 が使用されます。
- 戻り値: VarChar(9999)、Base64 でエンコード
指定のパラメーターでプレーンテキストを暗号化します。
例:
&publicKey.Load("C:\\certificates\\pubkey.pem")
&hash = HashAlgorithm.SHA256
&padding = AsymmetricEncryptionPadding.PCKS1PADDING
&plainText = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. In aliquet ultrices dolor a consectetur."
&encrypted = &AsymmetricCipher.DoEncrypt_WithPublicKey(&hash, &padding, &publicKey, &plainText)
大幅な変更。このメソッドは、公開鍵ではなく証明書を受け取っていました。 この変更は、
GeneXus 18 Upgrade 4 以降で行われています。
AsymmetricCipher.DoDecrypt_WithPrivateKey(hashAlgorithm, asymmetricEncryptionPadding, privateKey, encryptedInput)
- hashAlgorithm の入力: HashAlgorithm ドメインの値
- asymmetricEncryptionPadding の入力: AsymmetricEncryptionPadding ドメインの値
- privateKey の入力: PrivateKey タイプ、事前ロードされた秘密鍵
- encryptedInput の入力: VarChar(9999)、Base64 でエンコード
- 戻り値: VarChar(9999)。CryptographyEncodingUtil が使用されない限り、既定で UTF-8 が使用されます。
指定のパラメーターで、暗号化された入力を復号化します。
例:
&key.Load("C:\\certificates\\key.pem")
&hash = HashAlgorithm.SHA256
&padding = AsymmetricEncryptionPadding.PCKS1PADDING
&encrypted = "fu+S9ztam76KfzYMlZBEv6ABZp46bLtl05DwRQxL0FF2fXKs0uoclJqOdzqOWwRB5oKkSRJmAAjSOhqWA1k5Yp6dg+8gNLKPCRdQ1/xraNvUt82fnBlKJ37D+R20QxgkCVwKZ0I0ZkK5sb/T7rTJieVBHt3ncf3JpAGukginDwMJ0yti6Y9kpXwXZHsTVs5MDRD+lgtuWZhT+zXN3Ep5b1prV3LDM7PsenSxQorGzUQR3ccu+YJch+Kcp1va/RqeUAzaRufC66deu6EEBtJ7MrbOliVHZgQGwuwlP74G0LjwWQlh2LHyRkpjjWi4uv9rJ2Z8ClpNCsqVQyI3rvZB3g=="
&decrypted = &AsymmetricCipher.DoDecrypt_WithPrivateKey(&hash, &padding, &key, &encrypted)
AsymmetricCipher.DoDecrypt_WithPrivateKey(hashAlgorithm, asymmetricEncryptionPadding, publicKey, encryptedInput)
- hashAlgorithm の入力: HashAlgorithm ドメインの値
- asymmetricEncryptionPadding の入力: AsymmetricEncryptionPadding ドメインの値
- publicKey の入力: PublicKey タイプ、事前ロードされた公開鍵
- encryptedInput の入力: VarChar(9999)、Base64 でエンコード
- 戻り値: VarChar(9999)。CryptographyEncodingUtil が使用されない限り、既定で UTF-8 が使用されます。
指定のパラメーターで、暗号化された入力を復号化します。
例:
&publicKey.Load("C:\\certificates\\pubkey.pem")
&hash = HashAlgorithm.SHA256
&padding = AsymmetricEncryptionPadding.PCKS1PADDING
&encrypted = "fu+S9ztam76KfzYMlZBEv6ABZp46bLtl05DwRQxL0FF2fXKs0uoclJqOdzqOWwRB5oKkSRJmAAjSOhqWA1k5Yp6dg+8gNLKPCRdQ1/xraNvUt82fnBlKJ37D+R20QxgkCVwKZ0I0ZkK5sb/T7rTJieVBHt3ncf3JpAGukginDwMJ0yti6Y9kpXwXZHsTVs5MDRD+lgtuWZhT+zXN3Ep5b1prV3LDM7PsenSxQorGzUQR3ccu+YJch+Kcp1va/RqeUAzaRufC66deu6EEBtJ7MrbOliVHZgQGwuwlP74G0LjwWQlh2LHyRkpjjWi4uv9rJ2Z8ClpNCsqVQyI3rvZB3g=="
&decrypted = &AsymmetricCipher.DoDecrypt_WithPublicKey(&hash, &padding, &publicKey, &encrypted)
大幅な変更。このメソッドは、公開鍵ではなく証明書を受け取っていました。 この変更は、
GeneXus 18 Upgrade 4 以降で行われています。
このメソッドは、
GeneXus 18 Upgrade 4 以降で利用可能です。
AsymmetricCipher.DoDecrypt_WithPrivateKey(hashAlgorithm, asymmetricEncryptionPadding, certificate, encryptedInput)
- hashAlgorithm の入力: HashAlgorithm ドメインの値
- asymmetricEncryptionPadding の入力: AsymmetricEncryptionPadding ドメインの値
- certificate の入力: Certificate タイプ、事前ロードされた公開鍵
- encryptedInput の入力: VarChar(9999)、Base64 でエンコード
- 戻り値: VarChar(9999)。CryptographyEncodingUtil が使用されない限り、既定で UTF-8 が使用されます。
指定のパラメーターで、暗号化された入力を復号化します。
例:
&certificate.Load("C:\\certificates\\certificate.pem")
&hash = HashAlgorithm.SHA256
&padding = AsymmetricEncryptionPadding.PCKS1PADDING
&encrypted = "fu+S9ztam76KfzYMlZBEv6ABZp46bLtl05DwRQxL0FF2fXKs0uoclJqOdzqOWwRB5oKkSRJmAAjSOhqWA1k5Yp6dg+8gNLKPCRdQ1/xraNvUt82fnBlKJ37D+R20QxgkCVwKZ0I0ZkK5sb/T7rTJieVBHt3ncf3JpAGukginDwMJ0yti6Y9kpXwXZHsTVs5MDRD+lgtuWZhT+zXN3Ep5b1prV3LDM7PsenSxQorGzUQR3ccu+YJch+Kcp1va/RqeUAzaRufC66deu6EEBtJ7MrbOliVHZgQGwuwlP74G0LjwWQlh2LHyRkpjjWi4uv9rJ2Z8ClpNCsqVQyI3rvZB3g=="
&decrypted = &AsymmetricCipher.DoDecrypt_WithPublicKey(&hash, &padding, &certificate, &encrypted)
ファイルのパスを割り当てる場合は、パスのトラバースや改ざんによる脆弱性リスクを避けるため、ユーザーの入力 (エントリー) を連結したりサニタイズしたりしないでください。