I have an array of bytes, they are a raw PNG file that was originally a base64 encoded string.
The encoded string:
stEncodedQR = "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";
The raw bytes:
(src\funcs.cpp:1064) DecodedQRPicture ptr:0x19E51C0 size:0x673
(:0) ---- ----------------------------------------------- ----------------
(:0) 000| 89 50 4E 47 0D 0A 1A 0A 00 00 00 0D 49 48 44 52 .PNG........IHDR
(:0) 010| 00 00 01 40 00 00 01 40 01 00 00 00 00 E5 EB 98 ...#...#.....ek.
(:0) 020| 07 00 00 06 3A 49 44 41 54 78 DA ED 9A 31 8E AB ....:IDATxZm.1.+
(:0) 030| 4A 10 45 0B 11 90 D9 1B 40 EA 6D 90 F5 96 F0 06 J.E...Y.#jm.u.p.
(:0) 040| 30 6C 00 6F 89 8C 6D 20 B1 01 C8 08 10 F5 CF 65 0l.o..m 1.H..uOe
(:0) 050| 22 7B 9E F4 7F 40 BF E0 CB D6 48 A3 B1 0F A3 56 "{.t.#?`KVH#1.#V
(:0) 060| 77 D5 AD 5B D5 36 FF 8F 2F FB 82 5F F0 0B 7E C1 wU-[U6../{._p.~A
(:0) 070| 2F F8 05 FF CF E0 62 F6 F4 79 29 CA C7 30 3D 3C /x..O`bvty)JG0=<
(:0) 080| 1C E6 47 0C FC 59 C7 DD 2C 24 05 57 DF 1F 63 E8 .fG.|YG],$.W_.ch
(:0) 090| DC BB 21 F7 2D 7F 6D 61 1D ED 31 4E CF B1 7C 7A \;!w-.ma.m1NO1|z
(:0) 0A0| 62 70 28 1B 9B 5B 0B EB B6 5B B1 3F 60 B5 F0 F2 bp(..[.k6[1?`5pr
(:0) 0B0| E1 65 5D 24 07 EB 68 F7 31 6F A3 F7 85 DD 8A FD ae]$.khw1o#w.].}
(:0) 0C0| BE 4D 75 51 DE FF 0A D8 14 B9 FB 5E 9B DD DD 7B >MuQ^..X.9{^.]]{
(:0) 0D0| E3 C5 A3 41 FF 20 35 C8 C9 0C 1C 0B 11 61 6C CF cE#A. 5HI....alO
(:0) 0E0| 73 9B 9E 83 82 82 C5 FE 3E C2 6B 41 E2 F1 31 96 s.....E~>BkAbq1.
(:0) 0F0| 7F FC F9 15 B8 17 83 BC 8E 6A 7E 8D 65 E6 F9 51 .|y.8..<.j~.efyQ
(:0) 100| F1 90 3D 87 7C 89 F3 9F D2 F5 62 90 D0 B3 6A EE q.=.|.s.Rub.P3jn
(:0) 110| DC 6A 0B E0 8D 4D 66 F9 3A 2A 33 FA 2A 31 18 E7 \j.`.Mfy:*3z*1.g
(:0) 120| A3 28 9F 23 41 31 1F 55 DE 8D D3 7D B0 A6 DA 33 #(.#A1.U^.S}0&Z3
(:0) 130| AD 3A 2D C8 6F A2 6F A9 90 9C FD 3E 5A 23 9C A0 -:-Ho"o)..}>Z#.
(:0) 140| D8 EB 6A EE 63 5A F0 E0 E4 CF 14 6C 2B 42 72 BF XkjncZp`dO.l+Br?
(:0) 150| 45 AB 15 8C 73 B7 B1 6D 21 29 B8 54 65 36 70 26 E+..s71m!)8Te6p&
(:0) 160| 46 DE DF F4 D0 DE 54 08 1E E9 38 2F 96 16 3C 8A F^_tP^T..i8/..<.
(:0) 170| BC 1B 50 9A D0 16 53 C3 7E 0C AC 2E B4 91 B3 B2 <.P.P.SC~.,.4.32
(:0) 180| 6C 4C 0C 1A 22 47 08 A0 7C BE 14 D3 7D 0B 3E D8 lL.."G. |>.S}.>X
(:0) 190| 73 2B 6F 31 6F CD 13 83 FA E9 46 36 A3 BC 0F 88 s+o1oM..ziF6#<..
(:0) 1A0| EE CF 26 CD AB 97 D9 16 92 82 0B B1 B0 51 E2 CC nO&M+.Y....10QbL
(:0) 1B0| 2A 43 7A D1 00 4E A6 2E F2 B6 40 0C 3C 2D 68 64 *CzQ.N&.r6#.<-hd
(:0) 1C0| 7F 78 6D B3 2B FF A8 F0 96 E9 CD 3D 43 6E 87 90 .xm3+.(p.iM=Cn..
(:0) 1D0| 14 E4 F7 8D E5 0C 94 97 F9 88 14 76 D3 02 8D 37 .dw.e...y..vS..7
(:0) 1E0| BD FB 14 80 8B C1 15 2B E1 EC 90 AF 04 42 25 15 ={...A.+al./.B%.
(:0) 1F0| CC C6 A9 B6 29 DB A6 F7 2C BC 1E F4 01 1F E1 AF LF)6)[&w,<.t..a/
(:0) 200| 21 3F A2 DD 0C ED E1 AC 76 72 02 B9 5D B7 B4 20 !?"].ma,vr.9]74
(:0) 210| C1 F8 F2 D2 0A EF 23 8B 9A 5B 8A 3C 92 2F C1 9B AxrR.o#..[.<./A.
(:0) 220| 78 33 29 B8 C4 09 E7 42 55 6F A8 E4 83 52 DF AA x3)8D.gBUo(d.R_*
(:0) 230| 7C 75 FC 45 38 52 83 C6 EA F2 C3 10 9B E9 56 4D |u|E8R.FjrC..iVM
(:0) 240| C4 42 6F DE A2 B8 3C F4 AE B8 97 83 18 D5 CC 31 DBo^"8<t.8...UL1
(:0) 250| AA 67 0C 56 E5 03 17 89 CB F0 BC 8F 96 6D 9E 14 *g.Ve...Kp<..m..
(:0) 260| 3C 8A 70 6E 86 76 E8 EE B2 70 4F 14 28 52 D8 79 <.pn.vhn2pO.(RXy
(:0) 270| 3F 24 05 DD 65 9A B2 91 92 1E 7A BC 33 69 31 90 ?$.]e.2...z<3i1.
(:0) 280| 88 53 1D CB 77 ED B9 1E 5C 87 9F 35 92 EE 2A EF .S.Kwm9.\..5.n*o
(:0) 290| 2B 4A CF 56 E9 4C C2 12 43 52 10 89 B5 78 2A AE +JOViLB.CR..5x*.
(:0) 2A0| F4 06 0D E0 64 F0 D1 25 19 69 A9 41 FB 49 F4 D0 t..`dpQ%.i)A{ItP
(:0) 2B0| 4A 65 A9 36 BB 92 80 DA CE DE 0C 9E 18 44 E4 64 Je)6;..ZN^...Ddd
(:0) 2C0| 1B 1F F8 88 28 6B F3 1A 26 1C DC AD C0 C0 A6 05 ..x.(ks.&.\-##&.
(:0) 2D0| D7 8D CE 8C FA 06 5B 5A CC 17 19 67 CE 84 D0 50 W.N.z.[ZL..gN.PP
(:0) 2E0| 6F 9A 14 3C 0A AB 2B 95 1A E5 E2 40 9B 22 0D 6E o..<.++..eb#.".n
(:0) 2F0| 0A 79 E7 A5 48 0B BA D3 83 86 D3 41 60 61 E6 36 .yg%H.:S..SA`af6
(:0) 300| 92 FD A1 AF C2 CB 65 DB 93 82 EB 66 34 61 34 67 .}!/BKe[..kf4a4g
(:0) 310| D9 A0 2D 59 C7 FD 3E 90 7F AA F0 0F 4F 0D 22 78 Y -YG}>..*p.O."x
(:0) 320| D2 75 56 67 67 16 D2 8B F7 71 47 F3 96 2A 2D 78 RuVgg.R.wqGs.*-x
(:0) 330| BA 18 AC AB 4E A6 A1 21 DE A8 36 38 29 1A 85 F0 :.,+N&!!^(68)..p
(:0) 340| 61 3E 2E 07 69 4A 5E 58 F5 02 5B 41 16 12 08 F8 a>..iJ^Xu.[A...x
(:0) 350| 38 82 02 1B 95 77 EF D2 7C 39 28 D7 46 E7 AD B2 8....woR|9(WFg-2
(:0) 360| 46 49 9F 5F 3E F3 5C 4D 72 14 A1 7B F7 8F 97 83 FI._>s\Mr.!{w...
(:0) 370| 2E 9F 4E 5C 94 8F B3 1D 6C 6C AF D5 2D ED 19 59 ..N\..3.ll/U-m.Y
(:0) 380| 58 A5 05 0F 4C 84 4D 4F 89 3D D9 80 A1 9B D1 1E X%..L.MO.=Y.!.Q.
(:0) 390| 7A 14 2B 76 8B 69 41 B4 87 D3 E8 25 00 6A 43 51 z.+v.iA4.Sh%.jCQ
(:0) 3A0| 41 3C 1D 11 F1 C2 D2 56 21 31 A8 0E 58 93 AD E2 A<..qBRV!1(.X.-b
(:0) 3B0| 74 EE 84 E7 98 2F 9A FD 4C D9 67 BA 5E 0C EA F3 tn.g./.}LYg:^.js
(:0) 3C0| 4D A7 E1 43 D9 60 DF C6 FC 28 E4 9A 79 BA 7F B7 M'aCY`_F|(d.y:.7
(:0) 3D0| 5C 97 83 72 CD 8E DE E4 CE AE 98 3C BB 56 8D 8D \..rM.^dN..<;V..
(:0) 3E0| D5 50 33 2D B8 A2 AC 83 86 97 6D E4 89 5C E1 2F UP3-8",...md.\a/
(:0) 3F0| E9 DD B1 93 1F 4D C5 E5 E0 A1 FA E6 64 1E 85 85 i]1..MEe`!zfd...
(:0) 400| 8D B9 69 7C 4B 3F 4A 72 F0 81 27 05 D7 91 22 33 .9i|K?Jrp.'.W."3
(:0) 410| 77 23 D2 4E 81 25 F3 24 7B D9 28 A3 B1 7C B8 E6 w#RN.%s${Y(#1|8f
(:0) 420| CB 41 2F 51 1A 04 1E F6 56 E5 3D A9 30 CE 2C F6 KA/Q...vVe=)0N,v
(:0) 430| 3E 96 75 62 D0 A5 79 41 73 4D D7 58 EB 9C 78 95 >.ubP%yAsMWXk.x.
(:0) 440| 52 DC D3 4E 26 06 39 19 F2 DE 6A 4C 04 6B AC 88 R\SN&.9.r^jL.k,.
(:0) 450| 44 4E C9 CE CA 13 92 82 C8 FC 3A 6A BE 25 ED D1 DNINJ...H|:j>%mQ
(:0) 460| 5C 8D EE 44 9E 82 26 69 FD 98 68 5E 0D 3A E1 A0 \.nD..&i}.h^.:a
(:0) 470| D9 03 45 46 16 E6 A8 66 57 AF 80 E2 FA FB BC E7 Y.EF.f(fW/.bz{<g
(:0) 480| 7A F0 50 29 9B A5 F4 63 79 97 97 44 8D C2 61 41 zpP).%tcy..D.BaA
(:0) 490| B3 AE 2A 2D E8 2A 29 B2 C9 28 3D 6E AE 93 A7 43 3.*-h*)2I(=n..'C
(:0) 4A0| 12 C8 48 0C 5D 5A 70 A1 DB DE 66 3E E9 39 8A CD .HH.]Zp![^f>i9.M
(:0) 4B0| EE 72 52 B2 6F AB C4 3E A4 05 23 91 48 6B 22 17 nrR2o+D>$.#.Hk".
(:0) 4C0| 49 A1 D3 1C D7 D4 25 60 A3 DA 22 2D 88 6B 5E AA I!S.WT%`#Z"-.k^*
(:0) 4D0| B3 2F 89 14 9C BC 1B 66 C2 B3 31 55 D7 F7 89 E6 3/...<.fB31UWw.f
(:0) 4E0| F5 E0 A2 FC 43 D7 95 0D 84 A1 8A DB 59 6A D4 30 u`"|CW...!.[YjT0
(:0) 4F0| 7D 4C 3E 2E 07 89 47 DF 9B 6A 6A A2 2E 6A 5E AE }L>...G_.jj".j^.
(:0) 500| FB A8 FB 38 53 6D 2C A6 05 71 CD D4 93 D6 66 17 {({8Sm,&.qMT.Vf.
(:0) 510| 82 73 9F CF 0E 89 0E D5 DB C4 E0 21 B9 3D 6F 20 .s.O...U[D`!9=o
(:0) 520| C7 DD 2A 45 25 E6 11 23 F9 18 7F 35 E2 57 83 4B G]*E%f.#y..5bW.K
(:0) 530| C4 B4 6A 66 5F C7 FC 1C 6B B1 64 82 62 6A 64 AC D4jf_G|.k1d.bjd,
(:0) 540| 3C 29 88 7F EC 0B DD 0E 51 57 EF 83 8C 55 2F C9 <)..l.].QWo..U/I
(:0) 550| A7 EC E0 6A 13 83 BA FD 23 E7 D0 78 D6 58 AA 29 'l`j..:}#gPxVX*)
(:0) 560| 94 E2 6A F6 F3 31 60 4B 00 E6 6D 35 F7 72 AF 14 .bjvs1`K.fm5wr/.
(:0) 570| F3 F3 86 6A D3 0D E4 13 57 B5 A5 05 35 BE 8D AA ss.jS.d.W5%.5>.*
(:0) 580| 2D 78 A8 26 DA 39 D8 23 46 E6 25 CE 1F 23 92 CB -x(&Z9X#Ff%N.#.K
(:0) 590| 41 BC 43 87 E2 6E 08 8F 86 6A BA 9D 38 A7 D7 9A A<C.bn...j:.8'W.
(:0) 5A0| 7C BC DB 99 CB 41 8D 51 9D ED D1 0D 24 6D E8 8B |<[.KA.Q.mQ.$mh.
(:0) 5B0| 84 C0 48 46 B6 0A D9 F3 A4 E0 8F F2 FD C4 45 A3 .#HF6.Ys$`.r}DE#
(:0) 5C0| AF 33 D0 99 FD 74 FF BF 26 9A 57 83 BA 6D F6 89 /3P.}t.?&.W.:mv.
(:0) 5D0| A6 1F 0F AB 9B CF 8D 8D 91 A7 63 AB 6A F3 A4 20 &..+.O...'c+js$
(:0) 5E0| EF 3D 37 3B BF 52 A1 AF 51 DC CE 39 6E 37 68 1C o=7;?R!/Q\N9n7h.
(:0) 5F0| F2 E9 9A 2F 07 95 76 34 46 F2 8F 7D 85 B3 90 79 ri./..v4Fr.}.3.y
(:0) 600| 7C 8E A8 82 7A 88 E4 E0 39 6D D2 2D 8D 5A 13 96 |.(.z.d`9mR-.Z..
(:0) 610| B6 DF 4C F3 9E 6E FB 0B A0 AE BB 5B DB 6B 09 7F 6_Ls.n{. .;[[k..
(:0) 620| EE E7 AC EB 16 D3 83 6A FD 71 2E FB 7D 0B BA 83 ng,k.S.j}q.{}.:.
(:0) 630| DD D4 89 A2 3A 1C CE 2B 31 78 7A 0A 8A 8C DD CC ]T.":.N+1xz...]L
(:0) 640| CF CE 7B 7E 0D 54 DA BC FB 75 35 74 39 F8 FD 76 ON{~.TZ<{u5t9x}v
(:0) 650| D8 17 FC 82 5F F0 0B 7E C1 2F F8 AF AF 7F 00 2C X.|._p.~A/x//..,
(:0) 660| B0 6E EF BE 03 93 F3 00 00 00 00 49 45 4E 44 AE 0no>..s....IEND.
(:0) 670| 42 60 82 B`.
But when I try to write a file.png with the raw bytes, it doesn't write anything and the created png is blank. Any ideas how can I work around this?
size_t szDecodedLength = 0;
unsigned char * stDecodedQR = base64_decode(encodedPictureBase64,inLenEncodedPicture, &szDecodedLength);
ofstream outPicture("./flash/file.png", std::ios::out | std::ios::binary | std::ios::trunc);
string outString(reinterpret_cast<char*>(stDecodedQR), szDecodedLength);
if( outPicture && !outPicture.is_open() ){
return;
}
outPicture.write( reinterpret_cast<char*> (stDecodedQR), szDecodedLength);
// outPicture << outString; I've also tried creating a string and doing this but result is the same.
outPicture.flush();
outPicture.close();
This code solves the issue, it looks like it might be permission on the device I'm working on. Tested below code in Visual Studio with C++ and it generates the wanted file(picture) correctly, is a QR code that I can scan with my smartphone.
size_t szDecodedLength = 0;
unsigned char* stDecodedQR = base64_decode(encodedPictureBase64, inLenEncodedPicture, &szDecodedLength);
const size_t szArr = szDecodedLength;
std::vector<unsigned char> vDecodedQR;
for (auto i = 0; i < szDecodedLength; i++) {
vDecodedQR.push_back(stDecodedQR[i]);
}
std::ofstream outPicture("mypng.png", std::ios::out | std::ios::binary | std::ios::trunc);
if (outPicture && !outPicture.is_open()) {
std::cerr << " Error creating PNG file" << std::endl;
return;
}
outPicture.write(reinterpret_cast<char*> (stDecodedQR), szDecodedLength);
outPicture.close();
Related
I am making web application, and in my output "GlassFish Server 4.1.1" i can see
Algorithm: [SHA1withRSA]
Signature:
0000: 58 CE 29 EA FC F7 DE B5 CE 02 B9 17 B5 85 D1 B9 X.).............
0010: E3 E0 95 CC 25 31 0D 00 A6 92 6E 7F B6 92 63 9E ....%1....n...c.
0020: 50 95 D1 9A 6F E4 11 DE 63 85 6E 98 EE A8 FF 5A P...o...c.n....Z
0030: C8 D3 55 B2 66 71 57 DE C0 21 EB 3D 2A A7 23 49 ..U.fqW..!.=*.#I
0040: 01 04 86 42 7B FC EE 7F A2 16 52 B5 67 67 D3 40 ...B......R.gg.#
0050: DB 3B 26 58 B2 28 77 3D AE 14 77 61 D6 FA 2A 66 .;&X.(w=..wa..*f
0060: 27 A0 0D FA A7 73 5C EA 70 F1 94 21 65 44 5F FA '....s\.p..!eD_.
0070: FC EF 29 68 A9 A2 87 79 EF 79 EF 4F AC 07 77 38 ..)h...y.y.O..w8
I am beginner and sorry if this is a stupid question. I used templates in my code which i think are free. Can this be because they are not actually free or what?
This is only information about the SSL certificate which is used by Glassfish. For the normal usage you can safely ignore this log statement.
It is totally free to use.
I have a 1024-bit RSA public key :
FF A4 32 23 FF A2 0D 53 26 36 70 1B 74 DA 9D A7
73 45 A8 38 26 94 1E C8 A1 81 53 F4 DD 37 FF B2
7F B0 DB 31 D6 74 DD 1C 43 F1 C9 93 F5 68 D0 87
CB C6 B5 A6 2D F5 46 80 C9 1A D4 0A 84 18 07 7E
7A F1 05 EC 95 9A C2 0A 3E 4A 1E 8B CC 4E 3F 1C
99 E7 76 25 AE 6E A5 26 99 EA 44 AA 2C 23 DA DA
3B C1 2D E2 A3 D2 6D 51 5C AD 29 1A 72 3B D0 C7
A9 F2 FC 92 0E F8 F3 67 BD 92 DB FC 53 CE 55 B5
How can I get the public exponent and modulus to encrypt my message from it?
since the 2000th years we were using a compression-lib called addCRYPT.dll from a company called littleBIGware for our Windows-apps. Lib and company doesn't exists anymore, but users of our apps created lots of files up to now which are compressed with this lib.
Now for a new version I don't want to use this old lib, but must still be able to decompress the existing data.
I tried Zip, GZip and some others, but with no success.
Does anybody now, how to decompress these data? Here is a hex-dump of the first 64 bytes of some compressed blocks. There is a kind of a pattern visible, but what?
015104: 40 9c 00 00 42 5a 68 39 31 41 59 26 53 59 63 98 00 a8 00 30 ba 70 00 7f ff fa 10 8f fb e0 51 7c 77 db ed 7d bb 92 35 77 63 91 75 89 5d 60 65 91 26 b0 bb 32 ed aa 14 b5 a5 35 8d 34 ae dd c6 fa ...
017640: 40 9c 00 00 42 5a 68 39 31 41 59 26 53 59 2d fc 84 c1 00 49 2e 70 00 7f f8 7a 10 ef fb e0 5a ee 3e 9f 1e da ed a5 68 16 d5 ad ad 6b 3d cf 5e a4 f7 6d d6 d3 6b 47 bb ab 76 39 34 d8 ad bd ec ea ...
015760: 40 9c 00 00 42 5a 68 39 31 41 59 26 53 59 a5 a4 8a 00 00 4a 8b f0 00 7f ff fa 14 cf fb e0 51 dd b6 d5 ad 5e d6 fa 9b b9 bb 1a 77 77 6e dd 54 80 52 aa e5 98 cd 6d ad 92 18 bb 7a cb af 53 b1 da ...
015336: 40 9c 00 00 42 5a 68 39 31 41 59 26 53 59 4f 3c 3e 6f 00 2d cd f0 00 7f ff fe 10 8f fb e0 53 9f 6f 66 cb ec f6 6f 64 a2 da da 61 8d 2a 85 6b 4d 04 80 03 2b 1b 20 16 d9 de cf 6a b3 d5 a0 32 52 ...
016240: 40 9c 00 00 42 5a 68 39 31 41 59 26 53 59 af b2 df 80 00 27 bd f0 00 7f fd fa 10 8f fb e0 57 bd 5e 9f 19 f7 67 02 35 b0 dd ba 5d 67 b3 72 ce cd db 7a eb ba ce bd de f6 af 0c d6 ba d7 57 dc 1c ...
I am looking for an example of LUC algorithm, but I can't find anything. I know that it is in Crypto++, but I don't know C++ too well to use it.
I look for an example of algorithm of LUC...
It kind of depends on what you want to do. You might want to browse luc.h to see some of the things Crypto++ offers for LUC. There's a LUCES, a LUCSS and a LUC_IES. The *ES is encryption scheme, the *SS is a signature scheme, and the *IES is an integrated encryption scheme (which includes a key agreement algorithm and mask function).
Generally speaking, LUC is a public key encryption system. Using it is like using any other public key encryption system offered by Crypto++. That's because all the public key encryption systems inherit from the same classes (more correctly, base interfaces). You can see the design in the comments for file pubkey.h.
$ grep -R LUCES *
...
typedef LUCES<OAEP<SHA> >::Decryptor LUCES_OAEP_SHA_Decryptor;
typedef LUCES<OAEP<SHA> >::Encryptor LUCES_OAEP_SHA_Encryptor;
And that's pretty much all you need, though you may not know it.
Here's the easier problem to solve. How do you perform RSA encryption in Crypto++?
$ grep -R RSAES *
...
typedef RSAES<PKCS1v15>::Decryptor RSAES_PKCS1v15_Decryptor;
typedef RSAES<PKCS1v15>::Encryptor RSAES_PKCS1v15_Encryptor;
typedef RSAES<OAEP<SHA> >::Decryptor RSAES_OAEP_SHA_Decryptor;
typedef RSAES<OAEP<SHA> >::Encryptor RSAES_OAEP_SHA_Encryptor;
If you find an RSAES_PKCS1v15_Decryptor or RSAES_OAEP_SHA_Decryptor example, you just copy/replace with LUCES_OAEP_SHA_Decryptor and it will work just fine. And if you find an RSAES_PKCS1v15_Encryptor or RSAES_OAEP_SHA_Encryptor example, you just copy/replace with LUCES_OAEP_SHA_Encryptor and it will work just fine.
You can find the examples of using RSAES_OAEP_SHA_Encryptor and RSAES_OAEP_SHA_Decryptor on the Crypto++ wiki page for RSA Encryption Schemes. Or you can use the ECIES examples at Elliptic Curve Integrated Encryption Scheme (remember, all the public key systems inherit from the same base interfaces, so they all have the same methods and you use them the same way).
This should get you started. It creates a private key, saves it, then creates a public key, and saves it.
try
{
AutoSeededRandomPool prng;
FileSink fs1("lucs-private.der", true);
FileSink fs2("lucs-public.der", true);
InvertibleLUCFunction params;
params.GenerateRandomWithKeySize(prng, 2048);
LUC::PrivateKey privateKey(params);
privateKey.DEREncode(fs1);
LUCES_OAEP_SHA_Decryptor decryptor(privateKey);
// ...
LUC::PublicKey publicKey(params);
publicKey.DEREncode(fs2);
LUCES_OAEP_SHA_Encryptor encryptor(publicKey);
// ...
}
catch(CryptoPP::Exception& ex)
{
cerr << ex.what() << endl;
}
If you don't want to use InvertibleLUCFunction, the do something like this to generate the key. Note: RSA has an InvertibleRSAFunction.
LUC::PrivateKey privateKey;
privateKey.Initialize(prng, 2048);
...
LUC::PublicKey publicKey(privateKey);
...
An here's yet another way to do it:
FileSink fs1("lucs-private.der", true);
FileSink fs2("lucs-public.der", true);
LUCES_OAEP_SHA_Decryptor decryptor;
decryptor.AccessKey().Initialize(prng, 2048);
decryptor.AccessKey().DEREncode(fs1);
...
LUCES_OAEP_SHA_Encryptor encryptor(decryptor);
encryptor.AccessKey().DEREncode(fs2);
...
And here's a dump of the private key created by the test program:
$ dumpasn1 lucs-private.der
0 662: SEQUENCE {
4 1: INTEGER 0
7 257: INTEGER
: 00 B8 7A CA 6A 61 D9 CF 2F D8 89 5C A4 7D 74 7B
: AC F5 10 4C 3D 95 BF DD 2E F5 4E E5 F4 20 CF CD
: 44 7F C7 27 41 48 6B 83 E0 7C D9 66 16 8D 54 36
: 97 B9 CE 2D 80 A6 F6 E5 25 87 83 6E B9 41 45 DC
: 2A EB EC 4E EC D9 C0 17 B4 E0 04 F0 58 61 60 F8
: 87 18 27 16 58 BA 56 4E DD 9B C8 CD 18 46 28 38
: A2 6A A6 14 36 D0 A6 FF 9C B8 A8 B5 0F 3A 11 B5
: 00 08 44 B3 31 58 AF 01 F8 57 17 E8 FC 68 B2 5F
: [ Another 129 bytes skipped ]
268 1: INTEGER 17
271 129: INTEGER
: 00 C8 DF 47 D0 B2 6F C2 1A E4 B7 E8 3D 12 BB FF
: 04 F7 34 40 A0 0E ED DC F7 24 7B D9 46 EE 10 C4
: D5 E2 9C 93 05 CF 13 53 40 F4 50 EC 1F 6D D7 33
: FF FF 46 42 88 8D FC F4 EE 7F 0C 8B 71 71 51 D2
: 3C 32 E3 9A 11 B7 D8 CF EA 10 B2 07 49 3F 93 CD
: A0 3F 71 A9 23 27 35 1F 6A C9 1D FE CE 24 75 33
: 8F 53 71 B9 0B DE BC 05 93 98 A3 EA 94 8E 04 B1
: 29 A1 4F 4C 82 34 7A 08 3A 0E 07 98 8B 00 30 D7
: 5B
403 129: INTEGER
: 00 EB 1B D0 EF 5C 0F FC FC B7 56 A7 70 8C AA B7
: A6 90 C8 1F AA AD A0 0B 66 E5 33 75 F2 BE 68 35
: 29 2E 57 AC E0 E0 C8 04 A7 C4 13 1D 10 30 8B 50
: 20 17 0C 83 A7 14 4A 7D 25 31 77 50 66 08 36 13
: BE 9D C0 4E F4 44 74 7A BB D2 92 D0 F7 AE 7C EB
: 8E 84 5C 27 61 2C C9 7A D1 D0 C5 A0 13 98 96 E3
: 76 CD B0 E7 E8 7E 4E 0A 2D 00 86 07 57 DB 8A 51
: 1E 59 76 EA 88 44 4D DA F3 D6 AB 75 CB A6 45 F3
: F3
535 128: INTEGER
: 2E 6A AA BA B4 E8 DD 11 2D 31 A4 D5 F7 08 AB E3
: 1A 9A 15 58 AE C8 59 BE C4 75 85 90 6D 5D A4 18
: 39 27 8F FF 1C 9A FD 0F 0C 29 05 98 9C 16 FE 84
: A4 5C 85 15 F7 98 E6 D5 5B 23 CA 2F A2 27 8A 00
: 6E B1 BB 02 6E 93 53 85 30 30 61 F5 1C 49 5D 19
: EF DF CD 6F 11 7C 6D DC AE F6 A2 06 53 BB 7E 03
: C3 E5 4E E9 59 E0 D8 5F C3 28 0E E0 17 5C 63 6E
: 8E A6 18 FC AD A5 9B 08 D1 8B 7B 28 9D E2 CF E2
: }
0 warnings, 0 errors.
I'm working on understanding and drawing my own DLL for PDF417 (2d barcodes). Anyhow, the actual drawing of the file is perfect, and in correct boundaries of 32 bits (as monochrome result). At the time of writing the data, the following is a memory dump as copied from C++ Visual Studio memory dump of the pointer to the bmp buffer. Each row is properly allocated to 36 wide before the next row.
Sorry about the wordwrap in the post, but my output was intended to be the same 36 bytes wide as the memory dump so you could better see the distortion.
The current drawing is 273 pixels wide by 12 pixels high, monochrome...
00 ab a8 61 d7 18 ed 18 f7 a3 89 1c dd 70 86 f5 f7 1a 20 91 3b c9 27 e7 67 12 1c 68 ae 3c b7 3e 02 eb 00 00
00 ab a8 61 d7 18 ed 18 f7 a3 89 1c dd 70 86 f5 f7 1a 20 91 3b c9 27 e7 67 12 1c 68 ae 3c b7 3e 02 eb 00 00
00 ab a8 61 d7 18 ed 18 f7 a3 89 1c dd 70 86 f5 f7 1a 20 91 3b c9 27 e7 67 12 1c 68 ae 3c b7 3e 02 eb 00 00
00 ab 81 4b ca 07 6b 9c 11 40 9a e6 0c 76 0a fc a3 33 70 bb 30 55 87 e9 c4 10 58 d9 ea 0d 48 3e 02 eb 00 00
00 ab 81 4b ca 07 6b 9c 11 40 9a e6 0c 76 0a fc a3 33 70 bb 30 55 87 e9 c4 10 58 d9 ea 0d 48 3e 02 eb 00 00
00 ab 81 4b ca 07 6b 9c 11 40 9a e6 0c 76 0a fc a3 33 70 bb 30 55 87 e9 c4 10 58 d9 ea 0d 48 3e 02 eb 00 00
00 ab 85 7e d0 29 e8 14 f4 0a 7a 05 3c 37 ba 86 87 04 db b6 09 dc a0 62 fc d1 31 79 bc 5c 0a 8e 02 eb 00 00
00 ab 85 7e d0 29 e8 14 f4 0a 7a 05 3c 37 ba 86 87 04 db b6 09 dc a0 62 fc d1 31 79 bc 5c 0a 8e 02 eb 00 00
00 ab 85 7e d0 29 e8 14 f4 0a 7a 05 3c 37 ba 86 87 04 db b6 09 dc a0 62 fc d1 31 79 bc 5c 0a 8e 02 eb 00 00
00 ab 85 43 c5 30 e2 26 70 4a 1a f3 e4 4d ce 2a 3f 79 cd bc e6 de 73 6f 39 b7 9c db ce 6d 5f be 02 eb 00 00
00 ab 85 43 c5 30 e2 26 70 4a 1a f3 e4 4d ce 2a 3f 79 cd bc e6 de 73 6f 39 b7 9c db ce 6d 5f be 02 eb 00 00
00 ab 85 43 c5 30 e2 26 70 4a 1a f3 e4 4d ce 2a 3f 79 cd bc e6 de 73 6f 39 b7 9c db ce 6d 5f be 02 eb 00 00
Here is the code to WRITE the file out -- verbatim immediately at the time of the memory dump from above
FILE *stream;
if( fopen_s( &stream, cSaveToFile, "w+" ) == 0 )
{
fwrite( &bmfh, 1, (UINT)sizeof(BITMAPFILEHEADER), stream );
fwrite( &bmi, 1, (UINT)sizeof(BITMAPINFO), stream );
fwrite( &RGBWhite, 1, (UINT)sizeof(RGBQUAD), stream );
fwrite( ppvBits, 1, (UINT)bmi.bmiHeader.biSizeImage, stream );
fclose( stream );
}
Here's what ACTUALLY Gets written to the file.
00 ab a8 61 d7 18 ed 18 f7 a3 89 1c dd 70 86 f5 f7 1a 20 91 3b c9 27 e7 67 12 1c 68 ae 3c b7 3e 02 eb 00 00
00 ab a8 61 d7 18 ed 18 f7 a3 89 1c dd 70 86 f5 f7 1a 20 91 3b c9 27 e7 67 12 1c 68 ae 3c b7 3e 02 eb 00 00
00 ab a8 61 d7 18 ed 18 f7 a3 89 1c dd 70 86 f5 f7 1a 20 91 3b c9 27 e7 67 12 1c 68 ae 3c b7 3e 02 eb 00 00
00 ab 81 4b ca 07 6b 9c 11 40 9a e6 0c 76 0d 0a fc a3 33 70 bb 30 55 87 e9 c4 10 58 d9 ea 0d 48 3e 02 eb 00
00 00 ab 81 4b ca 07 6b 9c 11 40 9a e6 0c 76 0d 0a fc a3 33 70 bb 30 55 87 e9 c4 10 58 d9 ea 0d 48 3e 02 eb
00 00 00 ab 81 4b ca 07 6b 9c 11 40 9a e6 0c 76 0d 0a fc a3 33 70 bb 30 55 87 e9 c4 10 58 d9 ea 0d 48 3e 02
eb 00 00 00 ab 85 7e d0 29 e8 14 f4 0d 0a 7a 05 3c 37 ba 86 87 04 db b6 09 dc a0 62 fc d1 31 79 bc 5c 0d 0a
8e 02 eb 00 00 00 ab 85 7e d0 29 e8 14 f4 0d 0a 7a 05 3c 37 ba 86 87 04 db b6 09 dc a0 62 fc d1 31 79 bc 5c
0d 0a 8e 02 eb 00 00 00 ab 85 7e d0 29 e8 14 f4 0d 0a 7a 05 3c 37 ba 86 87 04 db b6 09 dc a0 62 fc d1 31 79
bc 5c 0d 0a 8e 02 eb 00 00 00 ab 85 43 c5 30 e2 26 70 4a 1a f3 e4 4d ce 2a 3f 79 cd bc e6 de 73 6f 39 b7 9c
db ce 6d 5f be 02 eb 00 00 00 ab 85 43 c5 30 e2 26 70 4a 1a f3 e4 4d ce 2a 3f 79 cd bc e6 de 73 6f 39 b7 9c
db ce 6d 5f be 02 eb 00 00 00 ab 85 43 c5 30 e2 26 70 4a 1a f3 e4 4d ce 2a 3f 79 cd bc e6 de 73 6f 39 b7 9c
db ce 6d 5f be 02 eb 00 00
Notice the start of the distortion with the "0d" in the result from reading the file back in the 4th line, about the 15th byte over... Then, there are a few more staggered around which in total, skew the image off by 9 bytes worth...
Obviously, the drawing portion is working ok as everything remains properly aligned in memory for the 12 lines.
Shouldn't you open the file in a compound mode i.e. writable & binary as in wb+?
Notice the start of the distortion with the "0d"
That's ASCII code for Carriage Return (CR) -- added on some OSes with newline (where a newline is actually a sequence of CR/LF). This should go away once you start writing the output in binary mode.
Your code looks neat otherwise. Cheers!
Your 0x0A (\n) gets converted to DOS format 0x0D0A (\r\n), becouse you're write the file in text mode. Switch to binary mode.
I actually just did a similar thing in java (printing bmp data to a thermal receipt printer). There are a couple of things i want to share with you:
bmp image data != an image format from microsoft. the MS bitmap has about 54 bytes of header information before any image data. (i spent a day or two working on this before I realized the difference)
bmp image data reads left to right, top to bottom, with the most significant bit on the left.
make sure the barcode image has a bitdepth of 1. this means 1 bit = 1 pixel. hexidecimal "ab" is 10101011 in binary, those 8 pixels will be filled in accordingly.
if you have a barcode 36 bytes wide, the barcode resolution is 288 x 12, not 273 x 12. (36 * 8 = 288).
the image data should be 432 bytes in size (12 rows of 36 bytes).
i dont know what this means:
Anyhow, the actual drawing of the file is perfect, and in correct boundaries of 32 bits (as monochrome result).
monochrome means its either 1 color or another. the pixel (think bit) is either filled in or it isnt.
Hope this helps