コード例 #1
0
		static PbeParametersGenerator MakePbeGenerator(
			string	type,
			IDigest	digest,
			byte[]	key,
			byte[]	salt,
			int		iterationCount)
		{
			PbeParametersGenerator generator;

			if (type.Equals(Pkcs5S1))
			{
				generator = new Pkcs5S1ParametersGenerator(digest);
			}
			else if (type.Equals(Pkcs5S2))
			{
				generator = new Pkcs5S2ParametersGenerator();
			}
			else if (type.Equals(Pkcs12))
			{
				generator = new Pkcs12ParametersGenerator(digest);
			}
			else if (type.Equals(OpenSsl))
			{
				generator = new OpenSslPbeParametersGenerator();
			}
			else
			{
				throw new ArgumentException("Unknown PBE type: " + type, "type");
			}

			generator.Init(key, salt, iterationCount);
			return generator;
		}
コード例 #2
0
		private static ICipherParameters GetCipherParameters(
			char[]		password,
			PemBaseAlg	baseAlg,
			byte[]		salt)
		{
			string algorithm;
			int keyBits;
			switch (baseAlg)
			{
				case PemBaseAlg.AES_128:		keyBits = 128;	algorithm = "AES128";	break;
				case PemBaseAlg.AES_192:		keyBits = 192;	algorithm = "AES192";	break;
				case PemBaseAlg.AES_256:		keyBits = 256;	algorithm = "AES256";	break;
				case PemBaseAlg.BF:				keyBits = 128;	algorithm = "BLOWFISH";	break;
				case PemBaseAlg.DES:			keyBits = 64;	algorithm = "DES";		break;
				case PemBaseAlg.DES_EDE:		keyBits = 128;	algorithm = "DESEDE";	break;
				case PemBaseAlg.DES_EDE3:		keyBits = 192;	algorithm = "DESEDE3";	break;
				case PemBaseAlg.RC2:			keyBits = 128;	algorithm = "RC2";		break;
				case PemBaseAlg.RC2_40:			keyBits = 40;	algorithm = "RC2";		break;
				case PemBaseAlg.RC2_64:			keyBits = 64;	algorithm = "RC2";		break;
				default:
					return null;
			}

			OpenSslPbeParametersGenerator pGen = new OpenSslPbeParametersGenerator();

			pGen.Init(PbeParametersGenerator.Pkcs5PasswordToBytes(password), salt);

			return pGen.GenerateDerivedParameters(algorithm, keyBits);
		}