Fine vs Coarse grained crypto API

时间:2011-09-15 10:14:35

标签: api cryptography

有没有什么理由可以选择粗粒度的api而不是细粒度的api?

粗调:

AESDecrypt(pad_type,
           mode_type, 
           mode_data, /* CTR or IV */
           ciphertext,
           plaintext)

精细:

AES128_ECB_Decrypt(ciphertext, plaintext)
AES128_CBC_PKCS5_Decrypt(iv, ciphertext, plaintext)
AES128_CBC_NOPAD_Decrypt(iv, ciphertext, plaintext)
AES256_CTR_Decrypt(ctr, ciphertext, plaintext)

1 个答案:

答案 0 :(得分:0)

功能(或安全性)没有任何差异。

对于所有版本的只有一个函数,您可以更改算法和模式而无需重新编译(如果您的应用程序从其他地方获取这些值),并且库可以支持新算法而无需更改API

许多不同的函数版本中,您的应用程序要么被锁定到特定的算法,要么需要大量的if / case语句来支持多个算法。