本文整理汇总了Java中org.bouncycastle.crypto.BasicAgreement类的典型用法代码示例。如果您正苦于以下问题:Java BasicAgreement类的具体用法?Java BasicAgreement怎么用?Java BasicAgreement使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
BasicAgreement类属于org.bouncycastle.crypto包,在下文中一共展示了BasicAgreement类的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: IESEngine
import org.bouncycastle.crypto.BasicAgreement; //导入依赖的package包/类
/**
* set up for use with stream mode, where the key derivation function
* is used to provide a stream of bytes to xor with the message.
*
* @param agree the key agreement used as the basis for the encryption
* @param kdf the key derivation function used for byte generation
* @param mac the message authentication code generator for the message
*/
public IESEngine(
BasicAgreement agree,
DerivationFunction kdf,
Mac mac)
{
this.agree = agree;
this.kdf = kdf;
this.mac = mac;
this.macBuf = new byte[mac.getMacSize()];
this.cipher = null;
}
示例2: KeyAgreementSpi
import org.bouncycastle.crypto.BasicAgreement; //导入依赖的package包/类
protected KeyAgreementSpi(
String kaAlgorithm,
BasicAgreement agreement,
DerivationFunction kdf)
{
this.kaAlgorithm = kaAlgorithm;
this.agreement = agreement;
this.kdf = kdf;
}
示例3: KeyAgreementSpi
import org.bouncycastle.crypto.BasicAgreement; //导入依赖的package包/类
protected KeyAgreementSpi(
String kaAlgorithm,
BasicAgreement agreement,
DerivationFunction kdf)
{
super(kaAlgorithm, kdf);
this.kaAlgorithm = kaAlgorithm;
this.agreement = agreement;
}
示例4: IESEngine
import org.bouncycastle.crypto.BasicAgreement; //导入依赖的package包/类
/**
* set up for use with stream mode, where the key derivation function
* is used to provide a stream of bytes to xor with the message.
*
* @param agree the key agreement used as the basis for the encryption
* @param kdf the key derivation function used for byte generation
* @param mac the message authentication code generator for the message
*/
public IESEngine(
BasicAgreement agree,
DerivationFunction kdf,
Mac mac)
{
this.agree = agree;
this.kdf = kdf;
this.mac = mac;
this.macBuf = new byte[mac.getMacSize()];
this.cipher = null;
}
示例5: JCEECDHKeyAgreement
import org.bouncycastle.crypto.BasicAgreement; //导入依赖的package包/类
protected JCEECDHKeyAgreement(
BasicAgreement agreement)
{
this.agreement = agreement;
}
示例6: eciesDecrypt
import org.bouncycastle.crypto.BasicAgreement; //导入依赖的package包/类
public ByteString eciesDecrypt(PrivateKey recipientPrivateKey, ByteString cipherText) {
BCECPrivateKey bcecPrivateKey = (BCECPrivateKey) recipientPrivateKey;
ECNamedCurveSpec ecNamedCurveSpec = (ECNamedCurveSpec) bcecPrivateKey.getParams();
int level = SecurityLevel.from(ecNamedCurveSpec.getName()).size();
//cipherText = ephemeralPubKeyBytes + encryptedTokBytes + macBytes
//ephemeralPubKeyBytes = first ((384+7)/8)*2 + 1 bytes = first 97 bytes
//hmac is sha3_384 = 48 bytes or sha3_256 = 32 bytes
int ephemeralPubKeyLength = ((level + 7) / 8) * 2 + 1;
int hmacLength = level >> 3;
int cipherTextLength = cipherText.size();
if (cipherTextLength <= ephemeralPubKeyLength + hmacLength)
throw new RuntimeException(String.format("Illegal cipherText length: %d must be > %d", cipherTextLength, ephemeralPubKeyLength + hmacLength));
ByteString ephemeralPubKey = cipherText.substring(0, ephemeralPubKeyLength);
ByteString encryptedContent = cipherText.substring(ephemeralPubKeyLength, cipherTextLength - hmacLength);
ByteString hmac = cipherText.substring(cipherTextLength - hmacLength);
ECPrivateKeyParameters ecdhPrivateKeyParameters;
try {
ecdhPrivateKeyParameters = (ECPrivateKeyParameters) (PrivateKeyFactory.createKey(bcecPrivateKey.getEncoded()));
} catch (IOException e) {
logger.error("ECIES decrypt load private key exception", e);
throw new RuntimeException(e);
}
ECDomainParameters ecDomainParameters = ecdhPrivateKeyParameters.getParameters();
ECCurve ecCurve = ecDomainParameters.getCurve();
ECPublicKeyParameters ecPublicKeyParameters = new ECPublicKeyParameters(ecCurve.decodePoint(ephemeralPubKey.toByteArray()), ecDomainParameters);
BasicAgreement agree = new ECDHBasicAgreement();
agree.init(ecdhPrivateKeyParameters);
byte[] keyAgreement = agree.calculateAgreement(ecPublicKeyParameters).toByteArray();
HKDFParameters hkdfParameters = new HKDFParameters(keyAgreement, null, null);
HKDFBytesGenerator hkdfBytesGenerator = new HKDFBytesGenerator(digest);
hkdfBytesGenerator.init(hkdfParameters);
byte[] hkdfOutputBytes = new byte[AESKEY_LENGTH + HMACKEY_LENGTH];
hkdfBytesGenerator.generateBytes(hkdfOutputBytes, 0, AESKEY_LENGTH + HMACKEY_LENGTH);
ByteString hkdfOutput = ByteString.copyFrom(hkdfOutputBytes);
ByteString aesKey = hkdfOutput.substring(0, AESKEY_LENGTH);
ByteString hmacKey = hkdfOutput.substring(AESKEY_LENGTH, AESKEY_LENGTH + HMACKEY_LENGTH);
HMac hMac = new HMac(digest);
hMac.init(new KeyParameter(hmacKey.toByteArray()));
hMac.update(encryptedContent.toByteArray(), 0, encryptedContent.size());
byte[] recoveredHmac = new byte[hMac.getMacSize()];
hMac.doFinal(recoveredHmac, 0);
if (!MessageDigest.isEqual(hmac.toByteArray(), recoveredHmac)) {
throw new RuntimeException("HMAC verify failed");
}
CFBBlockCipher aesCipher = new CFBBlockCipher(
new AESEngine(), BLOCK_BIT_SIZE);
ByteString iv = encryptedContent.substring(0, IV_LENGTH);
CipherParameters ivAndKey = new ParametersWithIV(new KeyParameter(aesKey.toByteArray()), iv.toByteArray());
aesCipher.init(false, ivAndKey);
byte[] decryptedBytes = new byte[500];
aesCipher.decryptBlock(encryptedContent.substring(IV_LENGTH).toByteArray(), 0, decryptedBytes, 0);
return ByteString.copyFrom(decryptedBytes);
}
示例7: OldIESEngine
import org.bouncycastle.crypto.BasicAgreement; //导入依赖的package包/类
/**
* set up for use with stream mode, where the key derivation function
* is used to provide a stream of bytes to xor with the message.
*
* @param agree the key agreement used as the basis for the encryption
* @param kdf the key derivation function used for byte generation
* @param mac the message authentication code generator for the message
*/
public OldIESEngine(
BasicAgreement agree,
DerivationFunction kdf,
Mac mac)
{
super(agree, kdf, mac);
}