उच्च स्तरीय abstraction? मैं Bouncy कैसल पुस्तकालय में उच्चतम स्तर कपोल-कल्पना लगता है शामिल होंगे:
(ब्लॉक सिफर और असममित ब्लॉक सिफर आरंभ के लिए)
मैं ज्यादातर पुस्तकालय के जावा संस्करण से परिचित हूँ। शायद इस कोड स्निपेट आप अपने उद्देश्यों के लिए एक पर्याप्त उच्च अमूर्त की पेशकश करेगा (उदाहरण के एईएस 256 एन्क्रिप्शन का उपयोग किया जाता है):
public byte[] encryptAES256(byte[] input, byte[] key) throws InvalidCipherTextException {
assert key.length == 32; // 32 bytes == 256 bits
CipherParameters cipherParameters = new KeyParameter(key);
/*
* A full list of BlockCiphers can be found at http://www.bouncycastle.org/docs/docs1.6/org/bouncycastle/crypto/BlockCipher.html
*/
BlockCipher blockCipher = new AESEngine();
/*
* Paddings available (http://www.bouncycastle.org/docs/docs1.6/org/bouncycastle/crypto/paddings/BlockCipherPadding.html):
* - ISO10126d2Padding
* - ISO7816d4Padding
* - PKCS7Padding
* - TBCPadding
* - X923Padding
* - ZeroBytePadding
*/
BlockCipherPadding blockCipherPadding = new ZeroBytePadding();
BufferedBlockCipher bufferedBlockCipher = new PaddedBufferedBlockCipher(blockCipher, blockCipherPadding);
return encrypt(input, bufferedBlockCipher, cipherParameters);
}
public byte[] encrypt(byte[] input, BufferedBlockCipher bufferedBlockCipher, CipherParameters cipherParameters) throws InvalidCipherTextException {
boolean forEncryption = true;
return process(input, bufferedBlockCipher, cipherParameters, forEncryption);
}
public byte[] decrypt(byte[] input, BufferedBlockCipher bufferedBlockCipher, CipherParameters cipherParameters) throws InvalidCipherTextException {
boolean forEncryption = false;
return process(input, bufferedBlockCipher, cipherParameters, forEncryption);
}
public byte[] process(byte[] input, BufferedBlockCipher bufferedBlockCipher, CipherParameters cipherParameters, boolean forEncryption) throws InvalidCipherTextException {
bufferedBlockCipher.init(forEncryption, cipherParameters);
int inputOffset = 0;
int inputLength = input.length;
int maximumOutputLength = bufferedBlockCipher.getOutputSize(inputLength);
byte[] output = new byte[maximumOutputLength];
int outputOffset = 0;
int outputLength = 0;
int bytesProcessed;
bytesProcessed = bufferedBlockCipher.processBytes(
input, inputOffset, inputLength,
output, outputOffset
);
outputOffset += bytesProcessed;
outputLength += bytesProcessed;
bytesProcessed = bufferedBlockCipher.doFinal(output, outputOffset);
outputOffset += bytesProcessed;
outputLength += bytesProcessed;
if (outputLength == output.length) {
return output;
} else {
byte[] truncatedOutput = new byte[outputLength];
System.arraycopy(
output, 0,
truncatedOutput, 0,
outputLength
);
return truncatedOutput;
}
}
संपादित: ओह, मैं तो बस लेख से लिंक पढ़ें। ऐसा लगता है की तुलना में मैंने सोचा था कि (जैसे, "एक गोपनीय संदेश भेजने") की तरह वह भी उच्च स्तर कपोल-कल्पना के बारे में बात कर रहा है। मुझे डर है कि मुझे समझ में नहीं आता कि वह क्या प्राप्त कर रहा है।
स्रोत
2009-05-20 12:07:43
पर पुनर्विचार कर अपनी खुद की एन्क्रिप्शन lib लेखन? अच्छा विकल्प! – Cheeso
हालांकि बाउंसीकास्टल के साथ बहुत सारे दस्तावेज नहीं हैं, लेकिन मुझे उनकी मेलिंग सूची बहुत मददगार मिलती है http://www.bouncycastle.org/csharpdevmailarchive/index.html। आप प्रश्न पूछने के लिए भी सदस्यता ले सकते हैं। आपको उन स्रोतों और परीक्षणों के साथ स्रोत भी मिलना चाहिए, जो अधिकांश उपयोग मामलों को कवर करते हैं। – Emmanuel
आप जो वर्णन कर रहे हैं वह ओएथ के लिए एक सामान्य उपयोग-मामले की तरह लगता है - क्या आपने इसका उपयोग करने पर विचार किया है? –