--- /dev/null
+%!PS-Adobe-3.0
+%%Creator: graphviz version 2.26.3 (20100126.1600)
+%%Title: start_up
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 429 616
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 393 580 boxprim clip newpath
+1 1 set_scale 0 rotate 40 41 translate
+% IC
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 131 498 moveto
+79 498 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 79 498 moveto
+73 498 67 492 67 486 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 67 486 moveto
+67 466 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 67 466 moveto
+67 460 73 454 79 454 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 79 454 moveto
+131 454 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 131 454 moveto
+137 454 143 460 143 466 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 143 466 moveto
+143 486 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 143 486 moveto
+143 492 137 498 131 498 curveto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+83.5 481.4 moveto 43 (Image) alignedtext
+0 0 0 nodecolor
+14 /Times-Roman set_font
+74.5 463.4 moveto 61 (Cover X ) alignedtext
+grestore
+% ED
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 158 416 moveto
+54 416 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 54 416 moveto
+48 416 42 410 42 404 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 42 404 moveto
+42 384 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 42 384 moveto
+42 378 48 372 54 372 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 54 372 moveto
+158 372 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 158 372 moveto
+164 372 170 378 170 384 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 170 384 moveto
+170 404 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 170 404 moveto
+170 410 164 416 158 416 curveto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+58 399.4 moveto 96 (x= LSB\(7 bits) alignedtext
+0 0 0 nodecolor
+14 /Times-Roman set_font
+50 381.4 moveto 112 (Edge Detection\)) alignedtext
+grestore
+% IC->ED
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 105.27 453.59 moveto
+105.38 445.12 105.5 435.3 105.61 426.1 curveto
+stroke
+0 0 0 edgecolor
+newpath 109.11 426.14 moveto
+105.73 416.1 lineto
+102.11 426.05 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 109.11 426.14 moveto
+105.73 416.1 lineto
+102.11 426.05 lineto
+closepath stroke
+grestore
+% message
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 225 494 moveto
+173 494 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 173 494 moveto
+167 494 161 488 161 482 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 161 482 moveto
+161 470 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 161 470 moveto
+161 464 167 458 173 458 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 173 458 moveto
+225 458 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 225 458 moveto
+231 458 237 464 237 470 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 237 470 moveto
+237 482 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 237 482 moveto
+237 488 231 494 225 494 curveto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+169 472.4 moveto 60 (message) alignedtext
+grestore
+% encrypt
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 360 412 moveto
+200 412 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 200 412 moveto
+194 412 188 406 188 400 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 188 400 moveto
+188 388 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 188 388 moveto
+188 382 194 376 200 376 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 200 376 moveto
+360 376 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 360 376 moveto
+366 376 372 382 372 388 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 372 388 moveto
+372 400 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 372 400 moveto
+372 406 366 412 360 412 curveto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+195.5 390.4 moveto 169 (m=encryption\(message\)) alignedtext
+grestore
+% message->encrypt
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 216.98 457.8 moveto
+228.09 446.55 242.53 431.93 254.78 419.53 curveto
+stroke
+0 0 0 edgecolor
+newpath 257.54 421.72 moveto
+262.07 412.15 lineto
+252.56 416.8 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 257.54 421.72 moveto
+262.07 412.15 lineto
+252.56 416.8 lineto
+closepath stroke
+grestore
+% key
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 297 494 moveto
+267 494 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 267 494 moveto
+261 494 255 488 255 482 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 255 482 moveto
+255 470 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 255 470 moveto
+255 464 261 458 267 458 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 267 458 moveto
+297 458 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 297 458 moveto
+303 458 309 464 309 470 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 309 470 moveto
+309 482 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 309 482 moveto
+309 488 303 494 297 494 curveto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+269.5 472.4 moveto 25 (key) alignedtext
+grestore
+% key->encrypt
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 281.56 457.8 moveto
+281.3 447.4 280.98 434.12 280.69 422.38 curveto
+stroke
+0 0 0 edgecolor
+newpath 284.19 422.06 moveto
+280.44 412.15 lineto
+277.19 422.23 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 284.19 422.06 moveto
+280.44 412.15 lineto
+277.19 422.23 lineto
+closepath stroke
+grestore
+% PI
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 92 192 moveto
+12 192 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 12 192 moveto
+6 192 0 186 0 180 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 0 180 moveto
+0 160 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 0 160 moveto
+0 154 6 148 12 148 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 12 148 moveto
+92 148 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 92 148 moveto
+98 148 104 154 104 160 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 104 160 moveto
+104 180 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 104 180 moveto
+104 186 98 192 92 192 curveto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+15.5 175.4 moveto 73 (Parameter) alignedtext
+0 0 0 nodecolor
+14 /Times-Roman set_font
+7.5 157.4 moveto 89 (Instantiation) alignedtext
+grestore
+% PI->ED
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 51.72 192.11 moveto
+51.94 224.2 54.73 285.19 71 334 curveto
+74.35 344.04 79.51 354.25 84.85 363.33 curveto
+stroke
+0 0 0 edgecolor
+newpath 81.97 365.31 moveto
+90.2 371.98 lineto
+87.92 361.63 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 81.97 365.31 moveto
+90.2 371.98 lineto
+87.92 361.63 lineto
+closepath stroke
+grestore
+% STC
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 338 188 moveto
+258 188 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 258 188 moveto
+252 188 246 182 246 176 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 246 176 moveto
+246 164 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 246 164 moveto
+246 158 252 152 258 152 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 258 152 moveto
+338 152 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 338 152 moveto
+344 152 350 158 350 164 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 350 164 moveto
+350 176 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 350 176 moveto
+350 182 344 188 338 188 curveto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+254 166.4 moveto 88 (y= STC\(x,m\)) alignedtext
+grestore
+% encrypt->STC
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 293.94 375.96 moveto
+301.81 364.6 310.88 349.25 315 334 curveto
+327.61 287.37 316.21 230.96 306.97 197.92 curveto
+stroke
+0 0 0 edgecolor
+newpath 310.25 196.67 moveto
+304.08 188.06 lineto
+303.54 198.64 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 310.25 196.67 moveto
+304.08 188.06 lineto
+303.54 198.64 lineto
+closepath stroke
+grestore
+% cond
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 193 334 moveto
+80 290 lineto
+193 246 lineto
+306 290 lineto
+closepath stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+163 295.4 moveto 60 (Size of x) alignedtext
+0 0 0 nodecolor
+14 /Times-Roman set_font
+144.5 277.4 moveto 97 ( enough for m) alignedtext
+grestore
+% encrypt->cond
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 264.85 375.88 moveto
+254.56 363.59 240.54 346.83 227.61 331.38 curveto
+stroke
+0 0 0 edgecolor
+newpath 230.08 328.87 moveto
+220.98 323.44 lineto
+224.71 333.36 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 230.08 328.87 moveto
+220.98 323.44 lineto
+224.71 333.36 lineto
+closepath stroke
+grestore
+% emb
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 373 110 moveto
+223 110 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 223 110 moveto
+217 110 211 104 211 98 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 211 98 moveto
+211 86 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 211 86 moveto
+211 80 217 74 223 74 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 223 74 moveto
+373 74 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 373 74 moveto
+379 74 385 80 385 86 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 385 86 moveto
+385 98 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 385 98 moveto
+385 104 379 110 373 110 curveto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+218.5 88.4 moveto 159 (stego=embedding\(y,X\)) alignedtext
+grestore
+% STC->emb
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 298 151.91 moveto
+298 142.53 298 130.85 298 120.3 curveto
+stroke
+0 0 0 edgecolor
+newpath 301.5 120.26 moveto
+298 110.26 lineto
+294.5 120.26 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 301.5 120.26 moveto
+298 110.26 lineto
+294.5 120.26 lineto
+closepath stroke
+grestore
+% end
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 313 36 moveto
+283 36 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 283 36 moveto
+277 36 271 30 271 24 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 271 24 moveto
+271 12 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 271 12 moveto
+271 6 277 0 283 0 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 283 0 moveto
+313 0 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 313 0 moveto
+319 0 325 6 325 12 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 325 12 moveto
+325 24 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 325 24 moveto
+325 30 319 36 313 36 curveto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+285 14.4 moveto 26 (end) alignedtext
+grestore
+% emb->end
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 298 73.71 moveto
+298 65.46 298 55.54 298 46.36 curveto
+stroke
+0 0 0 edgecolor
+newpath 301.5 46.08 moveto
+298 36.08 lineto
+294.5 46.08 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 301.5 46.08 moveto
+298 36.08 lineto
+294.5 46.08 lineto
+closepath stroke
+grestore
+% start
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 164 572 moveto
+134 572 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 134 572 moveto
+128 572 122 566 122 560 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 122 560 moveto
+122 548 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 122 548 moveto
+122 542 128 536 134 536 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 134 536 moveto
+164 536 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 164 536 moveto
+170 536 176 542 176 548 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 176 548 moveto
+176 560 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 176 560 moveto
+176 566 170 572 164 572 curveto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+132 550.4 moveto 34 (start) alignedtext
+grestore
+% start->IC
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 138.79 535.91 moveto
+133.94 527.3 127.99 516.75 122.44 506.92 curveto
+stroke
+0 0 0 edgecolor
+newpath 125.47 505.16 moveto
+117.51 498.17 lineto
+119.37 508.6 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 125.47 505.16 moveto
+117.51 498.17 lineto
+119.37 508.6 lineto
+closepath stroke
+grestore
+% start->message
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 160.6 535.91 moveto
+166.86 526.13 174.72 513.87 181.7 502.99 curveto
+stroke
+0 0 0 edgecolor
+newpath 184.84 504.57 moveto
+187.29 494.26 lineto
+178.95 500.79 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 184.84 504.57 moveto
+187.29 494.26 lineto
+178.95 500.79 lineto
+closepath stroke
+grestore
+% start->key
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 176.28 538.49 moveto
+195.78 527.35 222.6 511.9 246 498 curveto
+246.09 497.95 246.18 497.89 246.27 497.84 curveto
+stroke
+0 0 0 edgecolor
+newpath 248.14 500.8 moveto
+254.92 492.65 lineto
+244.54 494.79 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 248.14 500.8 moveto
+254.92 492.65 lineto
+244.54 494.79 lineto
+closepath stroke
+grestore
+% start->PI
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 121.68 550.56 moveto
+82.23 543.9 14 525.26 14 476 curveto
+14 476 14 476 14 290 curveto
+14 258.89 25.75 225.26 36.19 201.54 curveto
+stroke
+0 0 0 edgecolor
+newpath 39.42 202.89 moveto
+40.39 192.34 lineto
+33.06 199.98 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 39.42 202.89 moveto
+40.39 192.34 lineto
+33.06 199.98 lineto
+closepath stroke
+grestore
+% ED->cond
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 124.45 371.94 moveto
+134.29 360.18 146.73 345.32 158.29 331.49 curveto
+stroke
+0 0 0 edgecolor
+newpath 161.25 333.41 moveto
+164.98 323.5 lineto
+155.88 328.92 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 161.25 333.41 moveto
+164.98 323.5 lineto
+155.88 328.92 lineto
+closepath stroke
+grestore
+% cond->PI
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 157.42 259.72 moveto
+135.48 241.04 107.5 217.23 85.88 198.83 curveto
+stroke
+0 0 0 edgecolor
+newpath 88.11 196.13 moveto
+78.22 192.32 lineto
+83.57 201.46 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 88.11 196.13 moveto
+78.22 192.32 lineto
+83.57 201.46 lineto
+closepath stroke
+0 0 0 edgecolor
+14 /Times-Roman set_font
+119 215.4 moveto 19 (No) alignedtext
+grestore
+% cond->STC
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 221.97 256.89 moveto
+238.81 237.64 259.73 213.73 275.36 195.87 curveto
+stroke
+0 0 0 edgecolor
+newpath 278.19 197.96 moveto
+282.14 188.13 lineto
+272.92 193.35 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 278.19 197.96 moveto
+282.14 188.13 lineto
+272.92 193.35 lineto
+closepath stroke
+0 0 0 edgecolor
+14 /Times-Roman set_font
+262 215.4 moveto 23 (Yes) alignedtext
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 429 616
+end
+restore
+%%EOF
--- /dev/null
+The flowcharts given in Fig.~\ref{fig:sch} summarize our steganography scheme denoted as
+STABYLO for STeganography with cAnny, Bbs, binarY embedding at LOw cost.
+What follows successively details all the inner steps and flow inside
+the embedding stage (Fig.\ref{fig:sch:emb})
+and inside the extraction one(Fig.~\ref{fig:sch:ext}).
+
+
+\begin{figure*}[t]
+ \begin{center}
+ \subfloat[Data Embedding.]{
+ \begin{minipage}{0.49\textwidth}
+ \begin{center}
+ \includegraphics[width=5cm]{emb.pdf}
+ \end{center}
+ \end{minipage}
+ \label{fig:sch:emb}
+ }%\hfill
+ \subfloat[Data Extraction.]{
+ \begin{minipage}{0.49\textwidth}
+ \begin{center}
+ \includegraphics[width=5cm]{rec.pdf}
+ \end{center}
+ \end{minipage}
+ \label{fig:sch:ext}
+ }%\hfill
+ \end{center}
+ \caption{The STABYLO Scheme.}
+ \label{fig:sch}
+\end{figure*}
+
+
+\subsection{Steganalysis}
+
+LSB :
+"Adaptive steganalysis of Least Significant Bit replacement in grayscale natural images"
+
+Structural LSB Detectors:
+\verb+http://dde.binghamton.edu/download/structural_lsb_detectors/+
+
+Vainqueur du BOSS challenge
+
+
+ensemble:
+
+
+G. Gül and F. Kurugollu. A new methodology in steganalysis : Breaking highly
+undetactable steganograpy (HUGO). In Information Hiding, 13th International
+Workshop, volume 6958 of LNCS, pages 71–84, Prague, Czech Republic, May 18–
+20, 2011.
+
+
+\subsection{Data Embedding}
+
+
+
+
+\subsubsection{Edge Based Image Steganography}
+Image Quality: Edge Image Steganography
+\JFC{Raphael, les fuzzy edge detection sont souvent utilisés.
+ il faudrait comparer les approches en terme de nombre de bits retournés,
+ en terme de complexité. }
+
+
+Presentation des algos de detection de contour
+Caractéristiques
+
+Comparaison théoriques, références
+
+Algo de stegano basé juste sur cela : (pas de bbs, pas de stc, même message).
+
+Quels paramètres sont optimaux ? Combinaison ?
+
+
+
+
+
+\subsubsection{Security Considerations}
+
+Security aspect:
+BBS-based cryptographic version of the message
+
+\subsubsection{Minimizing Distortion with Syndrome-Treillis Codes}
+
+\input{stc}
+
+
+\subsection{Data Extraction}
\ No newline at end of file
--- /dev/null
+%!PS-Adobe-3.0
+%%Creator: graphviz version 2.26.3 (20100126.1600)
+%%Title: start_up
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 374 642
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 338 606 boxprim clip newpath
+1 1 set_scale 0 rotate 40 41 translate
+% SI
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 178 524 moveto
+100 524 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 100 524 moveto
+94 524 88 518 88 512 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 88 512 moveto
+88 500 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 88 500 moveto
+88 494 94 488 100 488 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 100 488 moveto
+178 488 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 178 488 moveto
+184 488 190 494 190 500 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 190 500 moveto
+190 512 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 190 512 moveto
+190 518 184 524 178 524 curveto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+95.5 502.4 moveto 87 (Stego Image) alignedtext
+grestore
+% ED
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 195 416 moveto
+83 416 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 83 416 moveto
+77 416 71 410 71 404 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 71 404 moveto
+71 384 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 71 384 moveto
+71 378 77 372 83 372 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 83 372 moveto
+195 372 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 195 372 moveto
+201 372 207 378 207 384 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 207 384 moveto
+207 404 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 207 404 moveto
+207 410 201 416 195 416 curveto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+78.5 399.4 moveto 121 (\(y,H\)= LSB\(7 bits) alignedtext
+0 0 0 nodecolor
+14 /Times-Roman set_font
+83 381.4 moveto 112 (Edge Detection\)) alignedtext
+grestore
+% SI->ED
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 139 487.51 moveto
+139 470.97 139 446.36 139 426.53 curveto
+stroke
+0 0 0 edgecolor
+newpath 142.5 426.38 moveto
+139 416.38 lineto
+135.5 426.38 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 142.5 426.38 moveto
+139 416.38 lineto
+135.5 426.38 lineto
+closepath stroke
+grestore
+% cond
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 162 334 moveto
+86 290 lineto
+162 246 lineto
+238 290 lineto
+closepath stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+132 295.4 moveto 60 (Size of y) alignedtext
+0 0 0 nodecolor
+14 /Times-Roman set_font
+133.5 277.4 moveto 57 ( enough) alignedtext
+grestore
+% PI
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 92 192 moveto
+12 192 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 12 192 moveto
+6 192 0 186 0 180 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 0 180 moveto
+0 160 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 0 160 moveto
+0 154 6 148 12 148 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 12 148 moveto
+92 148 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 92 148 moveto
+98 148 104 154 104 160 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 104 160 moveto
+104 180 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 104 180 moveto
+104 186 98 192 92 192 curveto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+15.5 175.4 moveto 73 (Parameter) alignedtext
+0 0 0 nodecolor
+14 /Times-Roman set_font
+7.5 157.4 moveto 89 (Instantiation) alignedtext
+grestore
+% cond->PI
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 135.37 260.95 moveto
+118.35 242.38 96.33 218.36 79.19 199.67 curveto
+stroke
+0 0 0 edgecolor
+newpath 81.52 197.02 moveto
+72.18 192.01 lineto
+76.36 201.75 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 81.52 197.02 moveto
+72.18 192.01 lineto
+76.36 201.75 lineto
+closepath stroke
+0 0 0 edgecolor
+14 /Times-Roman set_font
+104 215.4 moveto 19 (No) alignedtext
+grestore
+% STC
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 226 188 moveto
+134 188 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 134 188 moveto
+128 188 122 182 122 176 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 122 176 moveto
+122 164 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 122 164 moveto
+122 158 128 152 134 152 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 134 152 moveto
+226 152 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 226 152 moveto
+232 152 238 158 238 164 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 238 164 moveto
+238 176 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 238 176 moveto
+238 182 232 188 226 188 curveto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+129.5 166.4 moveto 101 (m = STCr\(y,H\)) alignedtext
+grestore
+% cond->STC
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 168.09 249.37 moveto
+170.61 232.63 173.45 213.63 175.74 198.42 curveto
+stroke
+0 0 0 edgecolor
+newpath 179.26 198.51 moveto
+177.28 188.1 lineto
+172.34 197.47 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 179.26 198.51 moveto
+177.28 188.1 lineto
+172.34 197.47 lineto
+closepath stroke
+0 0 0 edgecolor
+14 /Times-Roman set_font
+174 215.4 moveto 23 (Yes) alignedtext
+grestore
+% key
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 269 470 moveto
+239 470 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 239 470 moveto
+233 470 227 464 227 458 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 227 458 moveto
+227 446 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 227 446 moveto
+227 440 233 434 239 434 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 239 434 moveto
+269 434 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 269 434 moveto
+275 434 281 440 281 446 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 281 446 moveto
+281 458 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 281 458 moveto
+281 464 275 470 269 470 curveto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+241.5 448.4 moveto 25 (key) alignedtext
+grestore
+% decrypt
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 318 110 moveto
+158 110 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 158 110 moveto
+152 110 146 104 146 98 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 146 98 moveto
+146 86 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 146 86 moveto
+146 80 152 74 158 74 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 158 74 moveto
+318 74 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 318 74 moveto
+324 74 330 80 330 86 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 330 86 moveto
+330 98 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 330 98 moveto
+330 104 324 110 318 110 curveto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+154 88.4 moveto 168 (message=decryption\(m\)) alignedtext
+grestore
+% key->decrypt
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 257.54 433.83 moveto
+261.08 414.04 266 381.39 266 353 curveto
+266 353 266 353 266 170 curveto
+266 152.58 259.74 134.19 253.14 119.65 curveto
+stroke
+0 0 0 edgecolor
+newpath 256.09 117.73 moveto
+248.59 110.25 lineto
+249.8 120.78 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 256.09 117.73 moveto
+248.59 110.25 lineto
+249.8 120.78 lineto
+closepath stroke
+grestore
+% start
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 154 598 moveto
+124 598 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 124 598 moveto
+118 598 112 592 112 586 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 112 586 moveto
+112 574 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 112 574 moveto
+112 568 118 562 124 562 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 124 562 moveto
+154 562 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 154 562 moveto
+160 562 166 568 166 574 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 166 574 moveto
+166 586 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 166 586 moveto
+166 592 160 598 154 598 curveto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+122 576.4 moveto 34 (start) alignedtext
+grestore
+% start->SI
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 139 561.71 moveto
+139 553.46 139 543.54 139 534.36 curveto
+stroke
+0 0 0 edgecolor
+newpath 142.5 534.08 moveto
+139 524.08 lineto
+135.5 534.08 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 142.5 534.08 moveto
+139 524.08 lineto
+135.5 534.08 lineto
+closepath stroke
+grestore
+% start->key
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 160.1 561.89 moveto
+171.99 551.3 186.85 537.41 199 524 curveto
+212.03 509.62 225.28 492.37 235.51 478.36 curveto
+stroke
+0 0 0 edgecolor
+newpath 238.44 480.27 moveto
+241.45 470.12 lineto
+232.77 476.18 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 238.44 480.27 moveto
+241.45 470.12 lineto
+232.77 476.18 lineto
+closepath stroke
+grestore
+% start->PI
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 112 575.51 moveto
+76.89 567.95 20 549.06 20 506 curveto
+20 506 20 506 20 290 curveto
+20 259.25 29.93 225.51 38.73 201.67 curveto
+stroke
+0 0 0 edgecolor
+newpath 42.09 202.68 moveto
+42.4 192.09 lineto
+35.55 200.18 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 42.09 202.68 moveto
+42.4 192.09 lineto
+35.55 200.18 lineto
+closepath stroke
+grestore
+% end
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 253 36 moveto
+223 36 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 223 36 moveto
+217 36 211 30 211 24 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 211 24 moveto
+211 12 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 211 12 moveto
+211 6 217 0 223 0 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 223 0 moveto
+253 0 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 253 0 moveto
+259 0 265 6 265 12 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 265 12 moveto
+265 24 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 265 24 moveto
+265 30 259 36 253 36 curveto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+225 14.4 moveto 26 (end) alignedtext
+grestore
+% PI->ED
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 51.02 192.05 moveto
+50.49 224.88 53.09 287.68 77 334 curveto
+82.96 345.55 92.01 356.17 101.36 365.16 curveto
+stroke
+0 0 0 edgecolor
+newpath 99.13 367.85 moveto
+108.88 372 lineto
+103.84 362.68 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 99.13 367.85 moveto
+108.88 372 lineto
+103.84 362.68 lineto
+closepath stroke
+grestore
+% STC->decrypt
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 193.45 151.91 moveto
+200.87 141.94 210.2 129.38 218.41 118.34 curveto
+stroke
+0 0 0 edgecolor
+newpath 221.26 120.38 moveto
+224.42 110.26 lineto
+215.64 116.2 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 221.26 120.38 moveto
+224.42 110.26 lineto
+215.64 116.2 lineto
+closepath stroke
+grestore
+% ED->cond
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 143.88 371.94 moveto
+146 362.35 148.58 350.7 151.11 339.22 curveto
+stroke
+0 0 0 edgecolor
+newpath 154.58 339.76 moveto
+153.32 329.24 lineto
+147.74 338.25 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 154.58 339.76 moveto
+153.32 329.24 lineto
+147.74 338.25 lineto
+closepath stroke
+grestore
+% decrypt->end
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 238 73.71 moveto
+238 65.46 238 55.54 238 46.36 curveto
+stroke
+0 0 0 edgecolor
+newpath 241.5 46.08 moveto
+238 36.08 lineto
+234.5 46.08 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 241.5 46.08 moveto
+238 36.08 lineto
+234.5 46.08 lineto
+closepath stroke
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 374 642
+end
+restore
+%%EOF
--- /dev/null
+digraph start_up {
+ node [style = rounded, shape = rect] IC [label="Image\nCover X "]
+ node [style = rounded, shape = rect] message [label="message"]
+ node [style = rounded, shape = rect] key
+
+ node [style = rounded, shape = rect] PI [label="Parameter\nInstantiation"]
+ node [style = rounded, shape = rect] encrypt [label="m=encryption(message)"]
+ node [style = rounded, shape = rect] STC [label="y= STC(x,m)"]
+ node [style = rounded, shape = rect] emb [label="stego=embedding(y,X)"]
+
+ node [style = rounded, shape = rect] start end;
+ node [style = rounded, shape = rect] ED [label="x= LSB(7 bits\nEdge Detection)"]
+
+ node [style = "", shape = diamond] cond [label="Size of x\n enough for m"];
+
+ start -> PI
+ start -> IC
+ start -> message
+ start -> key
+
+ key -> encrypt
+
+
+ message -> encrypt
+ IC -> ED
+ ED -> cond
+ encrypt -> cond
+ encrypt -> STC
+ cond -> STC [label="Yes"]
+ cond -> PI [label="No"]
+
+ PI -> ED
+ STC -> emb
+ emb -> end
+
+ }
\ No newline at end of file
--- /dev/null
+digraph start_up {
+ node [style = rounded, shape = rect] SI [label="Stego Image"]
+ node [style = "", shape = diamond] cond [label="Size of y\n enough"];
+ node [style = rounded, shape = rect] key
+ node [style = rounded, shape = rect] start end;
+ node [style = rounded, shape = rect] PI [label="Parameter\nInstantiation"]
+ node [style = rounded, shape = rect] STC [label="m = STCr(y,H)"]
+ node [style = rounded, shape = rect] ED [label="(y,H)= LSB(7 bits\nEdge Detection)"]
+ node [style = rounded, shape = rect] decrypt [label="message=decryption(m)"]
+
+
+
+ start -> SI
+ start -> PI
+ PI -> ED
+ start -> key
+
+ SI -> ED
+ ED -> cond
+ cond -> STC [label="Yes"]
+ cond -> PI [label="No"]
+
+ STC -> decrypt
+ key -> decrypt
+ decrypt -> end
+
+
+
+ }
\ No newline at end of file
--- /dev/null
+Let
+$x=(x_1,\ldots,x_n)$ be the $n$-bits cover vector of the image $X$,
+$m$ be the message to embed and
+$y=(y_1,\ldots,y_n)$ be the $n$-bits stego vector.
+The usual additive embbeding impact of replacing $x$ by $y$ in $X$
+is given by a distortion function
+$D_X(x,y)= \Sigma_{i=1}^n \rho_X(i,x,y)$ where the function $\rho_X$
+expressed the cost of replacing $x_i$ by $y_i$ in $X$.
+Let us consider that $x$ is fixed:
+this is for instance the LSBs of the image edge bits.
+The objective is thus to find $y$ that minimizes $D_X(x,y)$.
+
+Hamming embedding proposes a solution to this problem.
+Some steganographic
+schemes~\cite{DBLP:conf/ih/Westfeld01,DBLP:conf/ih/KimDR06,DBLP:conf/mmsec/FridrichPK07} are based on this binary embedding.
+Furthermore this code provides a vector $y$ s.t. $Hy$ is equal to
+$m$ for a given binary matrix $H$.
+
+Let us explain this embedding on a small illustrative example where
+$\rho_X(i,x,y)$ is identically equal to 1,
+$m$ and $x$ are respectively a 3 bits column
+vector and a 7 bits column vector.
+Let then $H$ be the binary Hamming matrix
+$$
+H = \left(
+\begin{array}{lllllll}
+ 0 & 0 & 0 & 1 & 1 & 1 & 1 \\
+ 0 & 1 & 1 & 0 & 0 & 1 & 1 \\
+ 1 & 0 & 1 & 0 & 1 & 0 & 1
+\end{array}
+\right).
+$$
+The objective is to modify $x$ to get $y$ s.t. $m = Hy$.
+In this algebra, the sum and the product respectively correspond to
+the exclusive \emph{or} and to the \emph{and} Boolean operators.
+If $Hx$ is already equal to $m$, nothing has to be changed and $x$ can be sent.
+Otherwise we consider the difference $\delta = d(m,Hx)$ which is expressed
+as a vector :
+$$
+\delta = \left( \begin{array}{l}
+\delta_1 \\
+\delta_2 \\
+\delta_3
+\end{array}
+\right)
+\textrm{ where $\delta_i$ is 0 if $m_i = Hx_i$ and 1 otherwise.}
+$$
+Let us thus consider the $j$th column of $H$ which is equal to $\delta$.
+We denote by $\overline{x}^j$ the vector we obtain by
+switching the $j$th component of $x$,
+that is, $\overline{x}^j = (x_1 , \ldots, \overline{x_j},\ldots, x_n )$.
+It is not hard to see that if $y$ is $\overline{x}^j$, then
+$m = Hy$.
+It is then possible to embed 3 bits in only 7 LSB of pixels by modifying
+1 bit at most.
+In the general case, when comunicating $n$ message bits in
+$2^n-1$ pixels needs $1-1/2^n$ average changes.
+
+
+
+Unfortunately,
+
+
+for any given $H$, finding $y$ that solves $Hy=m$ and that
+that minimizes $D_X(x,y)$ has exponential complexity with respect to $n$.
+The Syndrome-Trellis Codes (STC)
+presented by Filler et al. in~\cite{DBLP:conf/mediaforensics/FillerJF10}
+is a practical solution to this complexity. Thanks to this contribution,
+the solving algorithm has a linear complexity with resspect to $n$.
+
+First of all, Filler et al. compute the matrix $H$
+by placing a small sub-matrix $\hat{H}$ of size $h × w$ next
+to each other and shifted down by one row.
+Thanks to this special form of $H$, one can represent
+every solution of $m=Hy$ as a path through a trellis.
+
+Next, the process of finding $y$ consists of a forward and a backward part:
+\begin{enumerate}
+\item Forward construction of the trellis that depends on $\hat{H}$, on $x$, on $m$, and on $\rho$;
+\item Backward determinization of $y$ which minimizes $D$ starting with
+the complete path with minimal weight
+\end{enumerate}
+Let us now give some details about these two parts.
+
+
--- /dev/null
+from random import *
+import numpy as np
+from math import *
+import gc
+
+infinity = 100000000000
+
+
+
+# forward part
+
+
+def dec(ch,n):
+ l = len(ch)
+ acc = 0
+ for i in xrange(l):
+ if ch[i]==1:
+ acc = acc + 2**(n-i-1)
+ return acc
+
+
+def bin(elem,n):
+ """Convertit un nombre en binaire"""
+ q = -1
+ res = [0 for i in xrange(n)]
+ i = 1
+ while q != 0:
+ q = elem // 2
+ r = elem % 2
+ res[n-i] = r
+ elem = q
+ i+=1
+ return res
+
+
+
+def xorb(a,b):
+ return 1 if a != b else 0
+
+def xor(e1,e2,h):
+ e1b,e2b = bin(e1,h),bin(e2,h)
+ d = dec([xorb(e1b[j],e2b[j]) for j in xrange(h)],h)
+ return d
+
+def lit(d,(indx,indy)):
+ if (indx,indy) in d :
+ return d[(indx,indy)]
+ else :
+ return 0
+
+
+
+
+def forward(H_hat,x,message,lnm,rho):
+ (h,w) = int(log(max(H_hat),2))+1, len(H_hat)
+ path = dict()
+ nbblock = lnm
+ wght = [infinity for _ in xrange(int(2**h))]
+ wght[0]=0
+ newwght = [0 for _ in xrange(int(2**h))]
+# rho = 1
+# rho= [1 for _ in xrange(len(x))]
+ indx,indm = 0,0
+ i=0
+ while i < nbblock: # pour chaque bit du message
+ for j in xrange(w): # pour chaque colonne de H_hat
+ #print indx, "en entrant",wght
+ k = 0
+ while k < int(2**h): # pour chaque ligne de H
+ w0 = wght[k] + x[indx]*rho[indx]
+ w1 = wght[xor(k,H_hat[j],h)] + (1-x[indx])*rho[indx]
+ if w1 < w0 :
+ path[(indx,k)] = 1
+ else :
+ if (indx,k) in path:
+ del path[(indx,k)]
+ newwght[k] = min(w0,w1)
+ k +=1
+ indx +=1
+ wght = [t for t in newwght]
+ #print " apres calcul",wght
+
+ for j in xrange(int(2**(h-1))): # pour chaque colonne de H
+ wght[j] = wght[2*j + message[indm]]
+ wght = wght[:int(pow(2,h-1))] + [infinity for _ in xrange(int(pow(2,h)-pow(2,h-1)))]
+ indm +=1
+ i +=1
+ start = np.argmin(wght)
+ return (start,path)
+
+
+def backward(start,H_hat,x,message,lnm,path):
+ (h,w) = int(log(max(H_hat),2))+1, len(H_hat)
+ indx,indm = len(x)-1,lnm-1
+ state = 2*start + message[indm]
+ indm -=1
+ # l'initialisation de state n'est pas optimale...
+ nbblock = lnm
+ y=np.zeros(len(x))
+ i=0
+ while i < nbblock:
+ l = range(w)
+ l.reverse()
+ for j in l: # pour chaque colonne de H_hat
+ y[indx] = lit(path,(indx,state))
+ state = xor(state,y[indx]*H_hat[j],h)
+ indx -=1
+ state = 2*state + message[indm]
+ indm -=1
+ i +=1
+ return [int(t) for t in y]
+
+
+
+
+
+
+def trouve_H_hat(n,m,h):
+ assert h ==7
+ alpha = float(n)/m
+ assert alpha >= 2
+ index = min(int(alpha),9)
+ mat = {
+ 2 : [71,109],
+ 3 : [95, 101, 121],
+ 4 : [81, 95, 107, 121],
+ 5 : [75, 95, 97, 105, 117],
+ 6 : [73, 83, 95, 103, 109, 123],
+ 7 : [69, 77, 93, 107, 111, 115, 121],
+ 8 : [69, 79, 81, 89, 93, 99, 107, 119],
+ 9 : [69, 79, 81, 89, 93, 99, 107, 119, 125]
+ }[index]
+ return(mat, index*m)
+
+
+def stc(x,rho,message):
+ lnm = len(message)
+ (mat,taille_suff) = trouve_H_hat(len(x),len(message),7)
+ x_b = x[:taille_suff]
+ (start,path) = forward(mat,x_b,message,lnm,rho)
+ return (x_b,backward(start,mat,x_b,message,lnm,path),mat)
+
+
+
+
+
+def nbdif(x,y):
+ r,it = 0,0
+ l = len(y)
+ while it < l :
+ if x[it] != y[it] :
+ r +=1
+ it += 1
+ return float(r)/l
+
+
+
+
+
+
+def prod(H_hat,lnm,y):
+ (h,w) = int(log(max(H_hat),2))+1, len(H_hat)
+ i=0
+ H =[]
+ V=[0 for _ in range(len(y))]
+ sol=[]
+ while i < lnm: # pour chaque ligne
+ V=[0 for _ in range(len(y))]
+ k = max([(i-h+1)*w,0])
+ dec = max([i-h+1,0])
+ for j in xrange(min([i+1,h])): #nbre de blocks presents sur la ligne i
+ for l in xrange(w): # pour chaque collone de H_hat
+ V[k] = bin(H_hat[l],h)[h-i-1+j+dec]
+ k+=1
+
+ sol.append(np.dot(np.array(V),np.array(y)))
+ i+=1
+ #H += [V]
+ #H = np.array(H)
+ #y = np.array(y)
+ #print "dot",np.dot(H,y),H.shape
+ #print "sol",sol
+ return sol#list(np.dot(H,y))
+
+def equiv(x,y):
+ lx = len(x)
+ assert lx == len(y)
+ i=0
+ while i < lx :
+ if x[i] % 2 != y[i]%2 :
+ return False
+ i += 1
+ return True
+
+"""
+################
+
+x = [randint(0,1) for _ in xrange(65000)]
+rho = [randint(1,9) for _ in xrange(65000)]
+message = [randint(0,1) for _ in xrange(26000)]
+
+
+
+#(x_b,y,H_hat) = stc(x,rho,message)
+# x_b est la sous partie de x qui va etre modifiee
+# y est le vecteur des bits modifies
+# H_hat est la sous-matrice retenue qui est embarquee dans H
+
+#print nbdif(x_b,y)
+
+#print message
+#print x
+#print rho
+#print y
+#message2 = [x%2 for x in prod(H_hat,len(message),y)]
+#print message2
+print max([message[l]-message2[l] for l in xrange(len(message))])
+print equiv(message,message2)
+
+"""
+count = 0
+
+while count < 100 and eval :
+ lx = randint(500,1000)
+ x = [randint(0,1) for _ in xrange(lx)]
+ rho = [randint(1,9) for _ in xrange(lx)]
+
+ lm = randint(lx/10,lx/2)
+ message = [randint(0,1) for _ in xrange(lm)]
+ (x_b,y,H_hat) = stc(x,rho,message)
+ eval = equiv(message, prod(H_hat,len(message),y))
+ if not (eval):
+ print x
+ print message
+
+ count +=1
+ if count % 10 == 0 :
+ print count
+
+print count
+
--- /dev/null
+%!PS-Adobe-3.0
+%%Creator: graphviz version 2.26.3 (20100126.1600)
+%%Title: start_up
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 429 616
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 393 580 boxprim clip newpath
+1 1 set_scale 0 rotate 40 41 translate
+% IC
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 131 498 moveto
+79 498 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 79 498 moveto
+73 498 67 492 67 486 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 67 486 moveto
+67 466 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 67 466 moveto
+67 460 73 454 79 454 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 79 454 moveto
+131 454 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 131 454 moveto
+137 454 143 460 143 466 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 143 466 moveto
+143 486 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 143 486 moveto
+143 492 137 498 131 498 curveto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+83.5 481.4 moveto 43 (Image) alignedtext
+0 0 0 nodecolor
+14 /Times-Roman set_font
+74.5 463.4 moveto 61 (Cover X ) alignedtext
+grestore
+% ED
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 158 416 moveto
+54 416 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 54 416 moveto
+48 416 42 410 42 404 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 42 404 moveto
+42 384 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 42 384 moveto
+42 378 48 372 54 372 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 54 372 moveto
+158 372 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 158 372 moveto
+164 372 170 378 170 384 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 170 384 moveto
+170 404 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 170 404 moveto
+170 410 164 416 158 416 curveto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+58 399.4 moveto 96 (x= LSB\(7 bits) alignedtext
+0 0 0 nodecolor
+14 /Times-Roman set_font
+50 381.4 moveto 112 (Edge Detection\)) alignedtext
+grestore
+% IC->ED
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 105.27 453.59 moveto
+105.38 445.12 105.5 435.3 105.61 426.1 curveto
+stroke
+0 0 0 edgecolor
+newpath 109.11 426.14 moveto
+105.73 416.1 lineto
+102.11 426.05 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 109.11 426.14 moveto
+105.73 416.1 lineto
+102.11 426.05 lineto
+closepath stroke
+grestore
+% message
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 225 494 moveto
+173 494 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 173 494 moveto
+167 494 161 488 161 482 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 161 482 moveto
+161 470 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 161 470 moveto
+161 464 167 458 173 458 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 173 458 moveto
+225 458 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 225 458 moveto
+231 458 237 464 237 470 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 237 470 moveto
+237 482 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 237 482 moveto
+237 488 231 494 225 494 curveto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+169 472.4 moveto 60 (message) alignedtext
+grestore
+% encrypt
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 360 412 moveto
+200 412 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 200 412 moveto
+194 412 188 406 188 400 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 188 400 moveto
+188 388 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 188 388 moveto
+188 382 194 376 200 376 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 200 376 moveto
+360 376 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 360 376 moveto
+366 376 372 382 372 388 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 372 388 moveto
+372 400 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 372 400 moveto
+372 406 366 412 360 412 curveto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+195.5 390.4 moveto 169 (m=encryption\(message\)) alignedtext
+grestore
+% message->encrypt
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 216.98 457.8 moveto
+228.09 446.55 242.53 431.93 254.78 419.53 curveto
+stroke
+0 0 0 edgecolor
+newpath 257.54 421.72 moveto
+262.07 412.15 lineto
+252.56 416.8 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 257.54 421.72 moveto
+262.07 412.15 lineto
+252.56 416.8 lineto
+closepath stroke
+grestore
+% key
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 297 494 moveto
+267 494 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 267 494 moveto
+261 494 255 488 255 482 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 255 482 moveto
+255 470 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 255 470 moveto
+255 464 261 458 267 458 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 267 458 moveto
+297 458 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 297 458 moveto
+303 458 309 464 309 470 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 309 470 moveto
+309 482 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 309 482 moveto
+309 488 303 494 297 494 curveto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+269.5 472.4 moveto 25 (key) alignedtext
+grestore
+% key->encrypt
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 281.56 457.8 moveto
+281.3 447.4 280.98 434.12 280.69 422.38 curveto
+stroke
+0 0 0 edgecolor
+newpath 284.19 422.06 moveto
+280.44 412.15 lineto
+277.19 422.23 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 284.19 422.06 moveto
+280.44 412.15 lineto
+277.19 422.23 lineto
+closepath stroke
+grestore
+% PI
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 92 192 moveto
+12 192 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 12 192 moveto
+6 192 0 186 0 180 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 0 180 moveto
+0 160 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 0 160 moveto
+0 154 6 148 12 148 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 12 148 moveto
+92 148 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 92 148 moveto
+98 148 104 154 104 160 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 104 160 moveto
+104 180 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 104 180 moveto
+104 186 98 192 92 192 curveto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+15.5 175.4 moveto 73 (Parameter) alignedtext
+0 0 0 nodecolor
+14 /Times-Roman set_font
+7.5 157.4 moveto 89 (Instantiation) alignedtext
+grestore
+% PI->ED
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 51.72 192.11 moveto
+51.94 224.2 54.73 285.19 71 334 curveto
+74.35 344.04 79.51 354.25 84.85 363.33 curveto
+stroke
+0 0 0 edgecolor
+newpath 81.97 365.31 moveto
+90.2 371.98 lineto
+87.92 361.63 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 81.97 365.31 moveto
+90.2 371.98 lineto
+87.92 361.63 lineto
+closepath stroke
+grestore
+% STC
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 338 188 moveto
+258 188 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 258 188 moveto
+252 188 246 182 246 176 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 246 176 moveto
+246 164 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 246 164 moveto
+246 158 252 152 258 152 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 258 152 moveto
+338 152 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 338 152 moveto
+344 152 350 158 350 164 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 350 164 moveto
+350 176 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 350 176 moveto
+350 182 344 188 338 188 curveto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+254 166.4 moveto 88 (y= STC\(x,m\)) alignedtext
+grestore
+% encrypt->STC
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 293.94 375.96 moveto
+301.81 364.6 310.88 349.25 315 334 curveto
+327.61 287.37 316.21 230.96 306.97 197.92 curveto
+stroke
+0 0 0 edgecolor
+newpath 310.25 196.67 moveto
+304.08 188.06 lineto
+303.54 198.64 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 310.25 196.67 moveto
+304.08 188.06 lineto
+303.54 198.64 lineto
+closepath stroke
+grestore
+% cond
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 193 334 moveto
+80 290 lineto
+193 246 lineto
+306 290 lineto
+closepath stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+163 295.4 moveto 60 (Size of x) alignedtext
+0 0 0 nodecolor
+14 /Times-Roman set_font
+144.5 277.4 moveto 97 ( enough for m) alignedtext
+grestore
+% encrypt->cond
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 264.85 375.88 moveto
+254.56 363.59 240.54 346.83 227.61 331.38 curveto
+stroke
+0 0 0 edgecolor
+newpath 230.08 328.87 moveto
+220.98 323.44 lineto
+224.71 333.36 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 230.08 328.87 moveto
+220.98 323.44 lineto
+224.71 333.36 lineto
+closepath stroke
+grestore
+% emb
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 373 110 moveto
+223 110 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 223 110 moveto
+217 110 211 104 211 98 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 211 98 moveto
+211 86 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 211 86 moveto
+211 80 217 74 223 74 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 223 74 moveto
+373 74 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 373 74 moveto
+379 74 385 80 385 86 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 385 86 moveto
+385 98 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 385 98 moveto
+385 104 379 110 373 110 curveto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+218.5 88.4 moveto 159 (stego=embedding\(y,X\)) alignedtext
+grestore
+% STC->emb
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 298 151.91 moveto
+298 142.53 298 130.85 298 120.3 curveto
+stroke
+0 0 0 edgecolor
+newpath 301.5 120.26 moveto
+298 110.26 lineto
+294.5 120.26 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 301.5 120.26 moveto
+298 110.26 lineto
+294.5 120.26 lineto
+closepath stroke
+grestore
+% end
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 313 36 moveto
+283 36 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 283 36 moveto
+277 36 271 30 271 24 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 271 24 moveto
+271 12 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 271 12 moveto
+271 6 277 0 283 0 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 283 0 moveto
+313 0 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 313 0 moveto
+319 0 325 6 325 12 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 325 12 moveto
+325 24 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 325 24 moveto
+325 30 319 36 313 36 curveto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+285 14.4 moveto 26 (end) alignedtext
+grestore
+% emb->end
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 298 73.71 moveto
+298 65.46 298 55.54 298 46.36 curveto
+stroke
+0 0 0 edgecolor
+newpath 301.5 46.08 moveto
+298 36.08 lineto
+294.5 46.08 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 301.5 46.08 moveto
+298 36.08 lineto
+294.5 46.08 lineto
+closepath stroke
+grestore
+% start
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 164 572 moveto
+134 572 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 134 572 moveto
+128 572 122 566 122 560 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 122 560 moveto
+122 548 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 122 548 moveto
+122 542 128 536 134 536 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 134 536 moveto
+164 536 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 164 536 moveto
+170 536 176 542 176 548 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 176 548 moveto
+176 560 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 176 560 moveto
+176 566 170 572 164 572 curveto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+132 550.4 moveto 34 (start) alignedtext
+grestore
+% start->IC
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 138.79 535.91 moveto
+133.94 527.3 127.99 516.75 122.44 506.92 curveto
+stroke
+0 0 0 edgecolor
+newpath 125.47 505.16 moveto
+117.51 498.17 lineto
+119.37 508.6 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 125.47 505.16 moveto
+117.51 498.17 lineto
+119.37 508.6 lineto
+closepath stroke
+grestore
+% start->message
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 160.6 535.91 moveto
+166.86 526.13 174.72 513.87 181.7 502.99 curveto
+stroke
+0 0 0 edgecolor
+newpath 184.84 504.57 moveto
+187.29 494.26 lineto
+178.95 500.79 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 184.84 504.57 moveto
+187.29 494.26 lineto
+178.95 500.79 lineto
+closepath stroke
+grestore
+% start->key
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 176.28 538.49 moveto
+195.78 527.35 222.6 511.9 246 498 curveto
+246.09 497.95 246.18 497.89 246.27 497.84 curveto
+stroke
+0 0 0 edgecolor
+newpath 248.14 500.8 moveto
+254.92 492.65 lineto
+244.54 494.79 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 248.14 500.8 moveto
+254.92 492.65 lineto
+244.54 494.79 lineto
+closepath stroke
+grestore
+% start->PI
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 121.68 550.56 moveto
+82.23 543.9 14 525.26 14 476 curveto
+14 476 14 476 14 290 curveto
+14 258.89 25.75 225.26 36.19 201.54 curveto
+stroke
+0 0 0 edgecolor
+newpath 39.42 202.89 moveto
+40.39 192.34 lineto
+33.06 199.98 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 39.42 202.89 moveto
+40.39 192.34 lineto
+33.06 199.98 lineto
+closepath stroke
+grestore
+% ED->cond
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 124.45 371.94 moveto
+134.29 360.18 146.73 345.32 158.29 331.49 curveto
+stroke
+0 0 0 edgecolor
+newpath 161.25 333.41 moveto
+164.98 323.5 lineto
+155.88 328.92 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 161.25 333.41 moveto
+164.98 323.5 lineto
+155.88 328.92 lineto
+closepath stroke
+grestore
+% cond->PI
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 157.42 259.72 moveto
+135.48 241.04 107.5 217.23 85.88 198.83 curveto
+stroke
+0 0 0 edgecolor
+newpath 88.11 196.13 moveto
+78.22 192.32 lineto
+83.57 201.46 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 88.11 196.13 moveto
+78.22 192.32 lineto
+83.57 201.46 lineto
+closepath stroke
+0 0 0 edgecolor
+14 /Times-Roman set_font
+119 215.4 moveto 19 (No) alignedtext
+grestore
+% cond->STC
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 221.97 256.89 moveto
+238.81 237.64 259.73 213.73 275.36 195.87 curveto
+stroke
+0 0 0 edgecolor
+newpath 278.19 197.96 moveto
+282.14 188.13 lineto
+272.92 193.35 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 278.19 197.96 moveto
+282.14 188.13 lineto
+272.92 193.35 lineto
+closepath stroke
+0 0 0 edgecolor
+14 /Times-Roman set_font
+262 215.4 moveto 23 (Yes) alignedtext
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 429 616
+end
+restore
+%%EOF