[解決済み] OpenSSLのCMAC_xxx関数を使ってAESのCMACを計算する方法は?
2022-02-18 17:38:03
質問内容
でAES CMACを計算する方法はありますか?
OpenSSL
/
libcrypto
?
AES-NI(または他のハードウェアアクセラレーション)を活用する方法が望ましい。
参照 OpenSSL EVP_DigestSign*によるCMAC鍵の生成に失敗する。
解決方法は?
にあるように
私のブログ記事
を使用することができます。
CMAC_CTX_new
,
CMAC_Init
,
CMAC_Update
と
CMAC_Final
から
lib crypto
を使って、AES-128-CBC CMACを計算します。以下はその例です。
#include <stdio.h>
#include <openssl/cmac.h>
void printBytes(unsigned char *buf, size_t len) {
for(int i=0; i<len; i++) {
printf("%02x ", buf[i]);
}
printf("\n");
}
int main(int argc, char *argv[])
{
// https://tools.ietf.org/html/rfc4493
// K, M and T from
// http://csrc.nist.gov/publications/nistpubs/800-38B/Updated_CMAC_Examples.pdf
// D.1 AES-128
// K: 2b7e1516 28aed2a6 abf71588 09cf4f3c
unsigned char key[] = { 0x2b,0x7e,0x15,0x16,
0x28,0xae,0xd2,0xa6,
0xab,0xf7,0x15,0x88,
0x09,0xcf,0x4f,0x3c};
// M: 6bc1bee2 2e409f96 e93d7e11 7393172a Mlen: 128
unsigned char message[] = { 0x6b,0xc1,0xbe,0xe2,
0x2e,0x40,0x9f,0x96,
0xe9,0x3d,0x7e,0x11,
0x73,0x93,0x17,0x2a };
unsigned char mact[16] = {0};
size_t mactlen;
CMAC_CTX *ctx = CMAC_CTX_new();
CMAC_Init(ctx, key, 16, EVP_aes_128_cbc(), NULL);
printf("message length = %lu bytes (%lu bits)\n",sizeof(message), sizeof(message)*8);
CMAC_Update(ctx, message, sizeof(message));
CMAC_Final(ctx, mact, &mactlen);
printBytes(mact, mactlen);
/* expected result T = 070a16b4 6b4d4144 f79bdd9d d04a287c */
CMAC_CTX_free(ctx);
return 0;
}
関連
-
[解決済み] MD5()関数は、どのライブラリにありますか?
-
[解決済み] OpenSSLのCMAC_xxx関数を使ってAESのCMACを計算する方法は?
-
[解決済み] プロキシを使用した openssl s_client
-
[解決済み] BEGIN RSA PRIVATE KEY」と「BEGIN PRIVATE KEY」の違いについて。
-
[解決済み] OpenSSLを使用して自己署名入りSSL証明書を生成する方法を教えてください。
-
[解決済み] RSA秘密鍵を使って公開鍵を生成する?
-
[解決済み】OpenSSLでPKCS#12証明書をPEMに変換する方法
-
[解決済み】"BEGIN RSA PRIVATE KEY" と "BEGIN PRIVATE KEY" の違いについて
-
[解決済み] pem 鍵を ssh-rsa 形式に変換する
-
[解決済み] OpenSSLで公開鍵を取り出すには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] OpenSSLを使用して「unable to write 'random state'」とはどういう意味ですか?
-
[解決済み] MD5()関数は、どのライブラリにありますか?
-
[解決済み] OpenSSLのCMAC_xxx関数を使ってAESのCMACを計算する方法は?
-
[解決済み] プロキシを使用した openssl s_client
-
[解決済み] opensslを使用してpfxをpemに変換する
-
[解決済み] BEGIN RSA PRIVATE KEY」と「BEGIN PRIVATE KEY」の違いについて。
-
[解決済み] RSA秘密鍵を使って公開鍵を生成する?
-
[解決済み】"BEGIN RSA PRIVATE KEY" と "BEGIN PRIVATE KEY" の違いについて
-
[解決済み] OpenSSLで公開鍵を取り出すには?
-
[解決済み] BEGIN RSA PUBLIC KEY」と「BEGIN PUBLIC KEY」の2種類の公開鍵形式がありますが、どのように変換すればよいのでしょうか?