C.2 SM2橢圓曲線消息加解密
C.2 SM2橢圓曲線消息加解密
<!-- /* Font Definitions */ @font-face {font-family:宋體; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-alt:SimSun; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 680460288 22 0 262145 0;} @font-face {font-family:黑體; panose-1:2 1 6 9 6 1 1 1 1 1; mso-font-alt:SimHei; mso-font-charset:134; mso-generic-font-family:modern; mso-font-pitch:fixed; mso-font-signature:-2147482945 953122042 22 0 262145 0;} @font-face {font-family:"Cambria Math"; panose-1:2 4 5 3 5 4 6 3 2 4; mso-font-charset:0; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:-536869121 1107305727 33554432 0 415 0;} @font-face {font-family:NimbusMonL-Regu; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-alt:"Times New Roman"; mso-font-charset:0; mso-generic-font-family:auto; mso-font-format:other; mso-font-pitch:auto; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:"\@宋體"; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 680460288 22 0 262145 0;} @font-face {font-family:"\@黑體"; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-charset:134; mso-generic-font-family:modern; mso-font-pitch:fixed; mso-font-signature:-2147482945 953122042 22 0 262145 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-unhide:no; mso-style-qformat:yes; mso-style-parent:""; margin:0cm; text-align:justify; text-justify:inter-ideograph; mso-pagination:none; font-size:10.5pt; mso-bidi-font-size:12.0pt; font-family:"Times New Roman",serif; mso-fareast-font-family:宋體; mso-font-kerning:1.0pt;} p.MsoPlainText, li.MsoPlainText, div.MsoPlainText {mso-style-unhide:no; mso-style-link:"純文本 Char"; margin:0cm; text-align:justify; text-justify:inter-ideograph; mso-pagination:none; font-size:10.5pt; font-family:宋體; mso-hansi-font-family:"Courier New"; mso-bidi-font-family:"Courier New"; mso-font-kerning:1.0pt;} p.a, li.a, div.a {mso-style-name:段; mso-style-unhide:no; mso-style-parent:""; mso-style-link:"段 Char"; margin:0cm; text-align:justify; text-justify:inter-ideograph; text-indent:21.0pt; mso-char-indent-count:2.0; mso-pagination:widow-orphan; tab-stops:center 210.05pt right dotted 464.9pt; text-autospace:none; font-size:10.5pt; mso-bidi-font-size:10.0pt; font-family:宋體; mso-hansi-font-family:"Times New Roman"; mso-bidi-font-family:"Times New Roman"; mso-no-proof:yes;} span.Char {mso-style-name:"段 Char"; mso-style-unhide:no; mso-style-locked:yes; mso-style-link:段; mso-ansi-font-size:10.5pt; font-family:宋體; mso-ascii-font-family:宋體; mso-no-proof:yes;} span.a0 {mso-style-name:"純文本 字符"; mso-style-noshow:yes; mso-style-unhide:no; mso-ansi-font-size:10.5pt; mso-bidi-font-size:12.0pt; font-family:等線; mso-ascii-font-family:等線; mso-ascii-theme-font:minor-fareast; mso-fareast-font-family:等線; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:"Courier New"; mso-bidi-font-family:"Courier New"; mso-font-kerning:1.0pt;} span.Char0 {mso-style-name:"純文本 Char"; mso-style-unhide:no; mso-style-locked:yes; mso-style-link:純文本; mso-ansi-font-size:10.5pt; mso-bidi-font-size:10.5pt; font-family:宋體; mso-ascii-font-family:宋體; mso-hansi-font-family:"Courier New"; mso-bidi-font-family:"Courier New"; mso-font-kerning:1.0pt;} .MsoChpDefault {mso-style-type:export-only; mso-default-props:yes; font-size:10.0pt; mso-ansi-font-size:10.0pt; mso-bidi-font-size:10.0pt; mso-ascii-font-family:"Times New Roman"; mso-fareast-font-family:宋體; mso-hansi-font-family:"Times New Roman"; mso-font-kerning:0pt;} /* Page Definitions */ @page {mso-page-border-surround-header:no; mso-page-border-surround-footer:no;} @page WordSection1 {size:612.0pt 792.0pt; margin:72.0pt 90.0pt 72.0pt 90.0pt; mso-header-margin:36.0pt; mso-footer-margin:36.0pt; mso-paper-source:0;} div.WordSection1 {page:WordSection1;} -->
橢圓曲線方程為:y^2 ^= x^3^ + ax + b
示例:*Fp *-256
素數p:FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 00000000 FFFFFFFF FFFFFFFF
系數a:FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 00000000 FFFFFFFF FFFFFFFC
系數b:28E9FA9E 9D9F5E34 4D5A9E4B CF6509A7 F39789F5 15AB8F92 DDBCBD41 4D940E93
基點G = (xG *, *yG),其階記為n。
坐標xG:32C4AE2C 1F198119 5F990446 6A39C994 8FE30BBF F2660BE1 715A4589 334C74C7
坐標yG: BC3736A2 F4F6779C 59BDCEE3 6B692153 D0A9877C C62A4740 02DF32E5 2139F0A0
階n: FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF 7203DF6B 21C6052B 53BBF409 39D54123
待加密的消息M:encryption standard
消息M的16進制表示:656E63 72797074 696F6E20 7374616E 64617264
私鑰dB:3945208F 7B2144B1 3F36E38A C6D39F95 88939369 2860B51A 42FB81EF 4DF7C5B8
公鑰PB=(xB, yB)為:
坐標xB:09F9DF31 1E5421A1 50DD7D16 1E4BC5C6 72179FAD 1833FC07 6BB08FF3 56F35020
坐標yB:CCEA490C E26775A5 2DC6EA71 8CC1AA60 0AED05FB F35E084A 6632F607 2DA9AD13
加密各步驟中的有關值:
產生隨機數k:59276E27 D506861A 16680F3A D9C02DCC EF3CC1FA 3CDBE4CE 6D54B80D EAC1BC21
計算橢圓曲線點C1=[k]G=(x1, y1):
坐標x1:04EBFC71 8E8D1798 62043226 8E77FEB6 415E2EDE 0E073C0F 4F640ECD 2E149A73
坐標y1:E858F9D8 1E5430A5 7B36DAAB 8F950A3C 64E6EE6A 63094D99 283AFF76 7E124DF0
在此C1選用未壓縮的表示形式,點轉換成字節串的形式為PC||x1||y1,其中PC為單一字節且PC=04,仍記為C1。
計算橢圓曲線點[k]PB=(x2,y2):
坐標x2:335E18D7 51E51F04 0E27D468 138B7AB1 DC86AD7F 981D7D41 6222FD6A B3ED230D
坐標y2:AB743EBC FB22D64F 7B6AB791 F70658F2 5B48FA93 E54064FD BFBED3F0 BD847AC9
消息M的比特長度klen=152
計算t=KDF(x2||y2,klen):44E60F DBF0BAE8 14376653 74BEF267 49046C9E
計算C~2 ~=M ⊕*t *:21886C A989CA9C 7D580873 07CA9309 2D651EFA
計算C3 ~=Hash(x2||M||y2~):
x2||M|| y2:
335E18D7 51E51F04 0E27D468 138B7AB1 DC86AD7F 981D7D41 6222FD6A B3ED230D
656E6372 79707469 6F6E2073 74616E64 617264AB 743EBCFB 22D64F7B 6AB791F7
0658F25B 48FA93E 54064FDB FBED3F0B D847AC9
C3:59983C18 F809E262 923C53AE C295D303 83B54E39 D609D160 AFCB1908 D0BD8766
輸出密文M=C1||C3||C2:
04 04EBFC71 8E8D1798 62043226 8E77FEB6 415E2EDE 0E073C0F 4F640ECD 2E149A73
E858F9D8 1E5430A5 7B36DAAB 8F950A3C 64E6EE6A 63094D99 283AFF76 7E124DF0
59983C18 F809E262 923C53AE C295D303 83B54E39 D609D160 AFCB1908 D0BD8766
21886CA9 89CA9C7D 58087307 CA93092D 651EFA
解密各步驟中的有關值**:**
計算橢圓曲線點[dB]C1=(x2 ,y2):
坐標x2:335E18D7 51E51F040 E27D4681 38B7AB1D C86AD7F9 81D7D416 222FD6AB 3ED230D
坐標y2:AB743EBC FB22D64F 7B6AB791 F70658F2 5B48FA93 E54064FD BFBED3F0 BD847AC9
計算t=KDF(x2||y2,klen):44E60F DBF0BAE8 14376653 74BEF267 49046C9E
計算M’=C2⊕*t *:656E63 72797074 696F6E20 7374616E 64617264
計算u= Hash(x2||M’||y2 ):
59983C18 F809E262 923C53AE C295D303 83B54E39 D609D160 AFCB1908 D0BD8766
明文M’: 656E63 72797074 696F6E20 7374616E 64617264,即為:encryption standard
GB/T 329185-2017 信息安全技術 SM2橢圓曲線公鑰密碼算法 第5部分:參數定義
推薦文章: