- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我通过使用以下代码将私钥 blob 拆分为 n、e、d、p、q 值,成功构建了 RSA2 key :
szKey = 0x400
e = struct.unpack("<I", bytearray(keyBlob[0x10:0x14]))[0]
#RSA modulus *n*
modulusLen = szKey// 8
modulusStart = 0x14
modulusEnd = modulusStart + modulusLen
n = int(bytes(keyBlob[modulusStart:modulusEnd][::-1]).hex(), 16)
#First factor of *n* (*p*)
pLen = szKey// 16
pStart = modulusEnd
pEnd = pStart + pLen
p = int(bytes(keyBlob[pStart:pEnd][::-1]).hex(), 16)
#Second factor of *n* (*q*)
qLen = szKey// 16
qStart = pEnd
qEnd = qStart + qLen
q = int(bytes(keyBlob[qStart:qEnd][::-1]).hex(), 16)
#Private exponent *d*
dLen = szKey// 8
dStart = keyBlobLen - dLen
d = int(bytes(keyBlob[dStart:keyBlobLen][::-1]).hex(), 16)
#create private key
key_params = (n, e, d, p, q)
try:
ret = RSA.construct(key_params)
except Exception as e:
raise ValueError("[ERROR] can't create RSA key")
我没有收到任何错误。但是,当我尝试使用此 key 解密数据时,出现错误:
不正确的解密 .我使用这段代码:
AESEncKey = bytes(binary.get_content_from_virtual_address(startEncBin + encBinLen - 0x80, 0x80))
cipher = PKCS1_OAEP.new(rsa2Key)
decText = cipher.decrypt(AESEncKey) #error here
同时我看到标准窗口函数在同一个 blob 上做得很好:
...
if ( CryptAcquireContextA(&phProv, 0, 0, 1u, 0xF0000000))
if ( CryptImportKey(phProv, pRSA2Key, 0x254u, 0, 0, &phKey))
if ( CryptDecrypt(phKey, 0, -1, 0, pbDataa, &dwDataLen))
...
为什么我会遇到“不正确的解密”错误?我想我可能在 python 中使用了错误的填充..
04C00000 07 02 00 00 00 A4 00 00 52 53 41 32 00 04 00 00 .....¤..RSA2....
04C00010 01 00 01 00 59 60 35 2F 60 02 72 8B 9C 9C 46 6F ....Y`5/`.r...Fo
04C00020 45 89 9E C1 5F 3B 78 86 60 26 AB 69 F7 88 21 DA E..Á_;x.`&«i÷.!Ú
04C00030 F3 97 D3 62 0D 1C 12 59 43 90 3C FF CF AF C2 A6 ó.Ób...YC.<ÿϯ¦
04C00040 E8 55 09 8C C2 26 F1 1B 6B 10 3F 57 2C E5 1E D3 èU..Â&ñ.k.?W,å.Ó
04C00050 D0 AE 74 97 67 01 85 8C F1 A0 41 F5 E4 BF 90 16 Юt.g...ñ Aõä¿..
04C00060 1E 1D 70 17 8D 66 90 74 74 72 CA EC E3 CD 98 C4 ..p..f.ttrÊìãÍ.Ä
04C00070 BC BB D6 E4 D7 96 83 B1 24 38 1C 29 C8 2F ED 25 ¼»Öä×..±$8.)È/í%
04C00080 EE 33 E3 51 C3 9A 61 2D EB CD 81 B6 8E 00 0E B0 î3ãQÃ.a-ëÍ.¶...°
04C00090 72 5F C1 AE 6F 76 B6 E8 BB 0B DC EC F4 82 77 DD r_Á®ov¶è».Üìô.wÝ
04C000A0 48 C8 BD 4D 83 8B AD A5 D2 80 A6 A9 36 48 27 A5 HȽM...¥Ò.¦©6H'¥
04C000B0 CE 9A 23 AB B2 9B 8D A0 84 C3 F3 5C E2 BB 8B CF Î.#«².. .Ãó\â».Ï
04C000C0 D5 53 DF DE 07 B1 E9 6E 1E 98 24 F7 BC B3 F4 51 ÕSßÞ.±én..$÷¼³ôQ
04C000D0 C1 BA 30 D1 B7 39 18 86 8D 66 54 96 87 CB 57 56 Áº0Ñ·9...fT..ËWV
04C000E0 B7 B9 43 B9 AA B0 BD 8A 6B A8 F2 1C A3 CE 1A 73 ·¹C¹ª°½.k¨ò.£Î.s
04C000F0 D0 01 E8 BE CC DA 93 E6 CB E2 E0 8B 38 6D A1 3E Ð.è¾ÌÚ.æËâà.8m¡>
04C00100 D5 68 0B 5B 69 BB 41 1E 99 8B 4B FE 56 AD F8 EA Õh.[i»A...KþV.øê
04C00110 5B 11 DC D5 63 01 E1 1B CA 75 A5 94 1A B3 F0 86 [.ÜÕc.á.Êu¥..³ð.
04C00120 4B 12 DB 26 7B EA 81 99 28 98 76 AD C8 85 AC 3A K.Û&{ê..(.v.È.¬:
04C00130 4A 2F CC 33 90 43 21 AD AD 49 B5 51 DB 32 32 7D J/Ì3.C!..IµQÛ22}
04C00140 DB 7A BA F2 55 59 91 CA 20 C2 8A 1A E6 3F 83 3B ÛzºòUY.Ê Â..æ?.;
04C00150 A6 58 BD 88 11 27 90 B4 09 7A B8 00 35 DC 3D A4 ¦X½..'.´.z¸.5Ü=¤
04C00160 EA E9 4A D3 6F 16 7C F9 53 29 14 8A EB E4 BE F5 êéJÓo.|ùS)..ëä¾õ
04C00170 6A E8 E0 C5 BC 52 EF C3 88 D3 C3 ED 9B 51 60 1B jèàżRïÃ.ÓÃí.Q`.
04C00180 74 DC 25 1B 1D 27 6B 74 09 B0 08 E0 9B 8A D7 48 tÜ%..'kt.°.à..×H
04C00190 73 FD 66 40 0B E8 41 81 02 E4 43 F5 BF F4 2D EA sýf@.èA..äCõ¿ô-ê
04C001A0 DF CD 5C 5E 3C 8D EF 9C 3D 38 88 04 C9 77 D1 4B ßÍ\^<.ï.=8..ÉwÑK
04C001B0 D2 86 71 EB 5A CE D7 FC CF BA 1B FD 2C 81 74 40 Ò.qëZÎ×üϺ.ý,.t@
04C001C0 82 79 13 DD 00 9E 93 E8 54 59 B4 34 7B 5F B9 80 .y.Ý...èTY´4{_¹.
04C001D0 7C 69 5B 44 65 A8 F4 15 DA FA BC 44 B3 3B 47 7B |i[De¨ô.Úú¼D³;G{
04C001E0 6D C7 75 0D CF A7 03 44 69 B8 E6 3F 94 03 72 1E mÇu.ϧ.Di¸æ?..r.
04C001F0 A3 92 6D AB F2 06 A8 C7 8C 7C B7 2A 0C 79 5C B3 £.m«ò.¨Ç.|·*.y\³
04C00200 2B BF 32 38 16 D0 58 67 F5 04 CA 9B 42 27 6E 76 +¿28.ÐXgõ.Ê.B'nv
04C00210 67 96 64 00 99 F9 91 B5 BD BA 97 03 50 85 64 0C g.d..ù.µ½º..P.d.
04C00220 72 1D 2A 92 6B D0 D6 08 86 D0 9C 68 2B 1C 36 AA r.*.kÐÖ..Ð.h+.6ª
04C00230 94 38 63 48 D3 07 CB FC 46 DC 86 86 23 E2 9D C2 .8cHÓ.ËüFÜ..#â.Â
04C00240 04 8C C4 2D 9A 13 40 E8 35 15 B3 84 54 1D 32 98 ..Ä-..@è5.³.T.2.
04C00250 F6 1F 8D 3B
这是一个加密代码:
00F0CF20 42 70 06 C1 08 C4 D6 CB C6 6E ED 63 3F 00 73 33 Bp.Á.ÄÖËÆníc?.s3
00F0CF30 92 AB 7E 15 88 1A F0 F5 D3 52 59 7B A0 65 1A A8 .«~...ðõÓRY{ e.¨
00F0CF40 5A EE DE AD AA C2 E9 06 F2 99 CB 9E 6A C7 F3 8C ZîÞ.ªÂé.ò.Ë.jÇó.
00F0CF50 75 CA 45 D9 A4 DC 29 AC 3D B1 5F 13 2F F5 DD 23 uÊEÙ¤Ü)¬=±_./õÝ#
00F0CF60 F1 00 1E 1A C9 DB CB 66 96 96 76 23 6E 69 99 66 ñ...ÉÛËf..v#ni.f
00F0CF70 09 B0 67 0F 04 DA F9 48 5E 54 EA A4 D4 6A 73 6A .°g..ÚùH^Tê¤Ôjsj
00F0CF80 DE FC 1F 1C 19 9F 4C BB F7 BF 1C C1 47 26 82 FB Þü....L»÷¿.ÁG&.û
00F0CF90 6C 71 5D 95 A1 45 A3 AA 0A 4D A1 B3 FE 9C D8 74 lq].¡E£ª.M¡³þ.Øt
最佳答案
解密不起作用有两个原因:
CryptDecrypt()
, (s. Remarks)使用小端格式,即密文必须反转。 from Crypto.Cipher import PKCS1_v1_5
...
cipher = PKCS1_v1_5.new(ret) # apply PKCS#1 v1.5 padding
ct = ct[::-1] # reverse ciphertext
decrypted = cipher.decrypt(ct, b'error')
print(decrypted.hex()) # 080200001066000020000000af1478d93f5ce5b8db5df78049fe4d22ac0c8b23f8563a6ad805bd0e82fb8249
解密工作:
080200001066000020000000af1478d93f5ce5b8db5df78049fe4d22ac0c8b23f8563a6ad805bd0e82fb8249
明文是一个 12 字节的
BLOBHEADER
结构后跟由它定义的 32 字节 AES key 。
关于python - 如何使用 Windows 中的 RSA 私钥 BLOB 在 python 中正确解密数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68225338/
我正在处理一组标记为 160 个组的 173k 点。我想通过合并最接近的(到 9 或 10 个组)来减少组/集群的数量。我搜索过 sklearn 或类似的库,但没有成功。 我猜它只是通过 knn 聚类
我有一个扁平数字列表,这些数字逻辑上以 3 为一组,其中每个三元组是 (number, __ignored, flag[0 or 1]),例如: [7,56,1, 8,0,0, 2,0,0, 6,1,
我正在使用 pipenv 来管理我的包。我想编写一个 python 脚本来调用另一个使用不同虚拟环境(VE)的 python 脚本。 如何运行使用 VE1 的 python 脚本 1 并调用另一个 p
假设我有一个文件 script.py 位于 path = "foo/bar/script.py"。我正在寻找一种在 Python 中通过函数 execute_script() 从我的主要 Python
这听起来像是谜语或笑话,但实际上我还没有找到这个问题的答案。 问题到底是什么? 我想运行 2 个脚本。在第一个脚本中,我调用另一个脚本,但我希望它们继续并行,而不是在两个单独的线程中。主要是我不希望第
我有一个带有 python 2.5.5 的软件。我想发送一个命令,该命令将在 python 2.7.5 中启动一个脚本,然后继续执行该脚本。 我试过用 #!python2.7.5 和http://re
我在 python 命令行(使用 python 2.7)中,并尝试运行 Python 脚本。我的操作系统是 Windows 7。我已将我的目录设置为包含我所有脚本的文件夹,使用: os.chdir("
剧透:部分解决(见最后)。 以下是使用 Python 嵌入的代码示例: #include int main(int argc, char** argv) { Py_SetPythonHome
假设我有以下列表,对应于及时的股票价格: prices = [1, 3, 7, 10, 9, 8, 5, 3, 6, 8, 12, 9, 6, 10, 13, 8, 4, 11] 我想确定以下总体上最
所以我试图在选择某个单选按钮时更改此框架的背景。 我的框架位于一个类中,并且单选按钮的功能位于该类之外。 (这样我就可以在所有其他框架上调用它们。) 问题是每当我选择单选按钮时都会出现以下错误: co
我正在尝试将字符串与 python 中的正则表达式进行比较,如下所示, #!/usr/bin/env python3 import re str1 = "Expecting property name
考虑以下原型(prototype) Boost.Python 模块,该模块从单独的 C++ 头文件中引入类“D”。 /* file: a/b.cpp */ BOOST_PYTHON_MODULE(c)
如何编写一个程序来“识别函数调用的行号?” python 检查模块提供了定位行号的选项,但是, def di(): return inspect.currentframe().f_back.f_l
我已经使用 macports 安装了 Python 2.7,并且由于我的 $PATH 变量,这就是我输入 $ python 时得到的变量。然而,virtualenv 默认使用 Python 2.6,除
我只想问如何加快 python 上的 re.search 速度。 我有一个很长的字符串行,长度为 176861(即带有一些符号的字母数字字符),我使用此函数测试了该行以进行研究: def getExe
list1= [u'%app%%General%%Council%', u'%people%', u'%people%%Regional%%Council%%Mandate%', u'%ppp%%Ge
这个问题在这里已经有了答案: Is it Pythonic to use list comprehensions for just side effects? (7 个答案) 关闭 4 个月前。 告
我想用 Python 将两个列表组合成一个列表,方法如下: a = [1,1,1,2,2,2,3,3,3,3] b= ["Sun", "is", "bright", "June","and" ,"Ju
我正在运行带有最新 Boost 发行版 (1.55.0) 的 Mac OS X 10.8.4 (Darwin 12.4.0)。我正在按照说明 here构建包含在我的发行版中的教程 Boost-Pyth
学习 Python,我正在尝试制作一个没有任何第 3 方库的网络抓取工具,这样过程对我来说并没有简化,而且我知道我在做什么。我浏览了一些在线资源,但所有这些都让我对某些事情感到困惑。 html 看起来
我是一名优秀的程序员,十分优秀!