Escolar Documentos
Profissional Documentos
Cultura Documentos
! " # $ " %
! %
! &
! ' ( # #)* # *' ) +
%! # , **# ' $ " #)* # *' ) -
& $
& #'
& & ( )$
& "
& *+ ,
& - $ .
& %
& . / 0 %
&! ' '"
&! .
&!
&!% #
+! )/ / #" #)* # *' ) &
+! . &
* 1 2 34 51 26 *
* 2 3 52 6 *
* & 3 5 26 -
* -
* *2 3# -
* -( 7 -
* ( -
+! -
* ! 1 5!1 6
* 8 !1 5&!1 6
* & " 1 51 6
* /
+!% # 0
1! )/ / #" #)* # *' ) 2
1! . 2
- ( 19
- 0 :
1!
1!% !
1!& *" /
1!+ 3 . &
1!1 # &
-! 4$" 5 $" 1
0! 6"6," # *' ) 0
! " # $%
! " # $ "
!
$ $ "
; $ 3
! " # & $%
!
*5" # ( ?$ 8 $
; $ ?
B $ "
' $
$
(
$ $ 8 3 $
<
$ 5 6
7 , E $ 9
3
7 8 $ 3 9$ $
9 $ 3
* 8 $ $ ; $
8 8 " $ $ $
$ ;
$ $
$ 3 5 " 6 8
$ $ $
: ! " # $%
! ' ( # #)* # *' )
! " 5 6
$ " 8 $ ; C D; 3
' $ $
♦ 4 E
♦ ,
♦ , $
♦ ?
$ $ ; "
♦
♦ #"
♦ ?
8 $? " = '" ;
" "
8 " " $ '
, ! , !
0 8
8
#"
4 E ?
"
?
4 $ ?
: ! " # * $%
$ " $
9 $ E $ $ ;
' 3 " " 5 - 6
?$ ' 3 $$ ' 3; '
9 $ 8
' 3 5 * 6
; ; 8
' 9 $ $ $
; ' $ 5
6
: ! " # - $%
%! # , **# ' $ " #)* # *' )
8 ' $ ' " $
) ' $
$= ;
&
! " ' ? 3
" ' $ " $ $
$ " 4 $ ;
$ " $ '
& *.
? "' E $E ;
' $
" 3 "
3 ' ;$ ' $ '
$$ " ' $ $ " 1
5 * &6 8 F $' ;
$ 1
& & 5 ,
! 3 $ ( " ; 3
"
8 $$ $$ ' $ 3
♦ 8 $ $
♦ 8 $ 3 5 7 $ 3 6
♦ 8 " $
2 3 $ 3 $ $ ;
' ' " ' 3
&
B$ $
; ? $ ; $ 9
E 3
' 5 GHG ' 3
0 ' 3 ' + ' 8 " ;$ $ 6
; $ $ 3 9
& * 3 $ (
8 $ ' + ' $
9
♦ 0 $ )' " $ 8 " $
$? ?$ " 5?? 6 ? ' 3 " ' '
08 $
♦ 1 3 ' ( ' 3 "
( ! $ 3 " $
♦ : 3 $ 8 " / /
5// 6
: ! " # $%
♦ 0 $ " ?#
' " <
♦ 8 1 51 6 ' " I
/ "
♦ ) 0 ) $ A) " '
"
♦ , $ <4?41 ' 8 " 278 3
? '+ ' $ 3 2 + '
$
?$ + ' ; 3 $
$ ; <4?41 5 $ 6
$ / 4 3 &!1 $
3 9 $ $$ + ' " ;
?# ' " : : $ < 5 ' 6: ' " :
:
9 $ : : # #; 1 3
"; "
4 $ $" $ $ B
$ ' 3 $ $
8 ' " " $ " $ ;
' ?$ $ $ + ' $ " "
; " $ " 5
9 6' 9 $ $
$ ' 3 3 B " 9 "
' 3 $ $ $ 3 $
9 $' 9 + ' $ $
$J* % $ ' 3 5 - $
6 " ' $ "
$ + ' 8 ' "
8 $$ ; $" 9 " : $
3
& - 9
? 3 $ $;
$
8 $ " ' $
" $ 19 ' $ '
4 3 $ $ B $ 3
' E 3 $ .
8 $ $
= $ ' $ $ '
K $ L
KM:: I $ ::L
K L
K L
: ! " # . $%
K 0 4 L
K L
K 4 = = NO4 = = ;4
NP P
;# ( 83 N* * * ;
N O<L
K< L
K 1 NO = O NO4 = = O<L
K 1 NO = O
NO4 = = O<L
K 1 NO = O
NO4 = = O<L
K< 0 4 L
K< L
K< L
K< $ L
&
$ 3 $ 5 $
6; $ " 3 (
9 " " 3 $
; ' 3 " 5
C2 #018 D6 = ' " ; " "
$
?$ ; $'
♦ , + ' !# #?
♦ $ ; $
♦ ( 1 '
= '" ; ' "
♦ ! 3 : ' 3' $ 5$
; $ 6
♦ ! 3 $ $
8 C D; " ' ?8
/ " $ ' " ' $
C D
I $ $? # / 3 "
! 3 3 $ 3 ' " $
! $ 8 ;
3 ' "
& . # 9
$ ; " 3
" 3 /0 " # " 018 8
' + ' #? 8 $
/ 0 $ " $ 5 & -6 8
$ /0 " # " $ ;
; ; $ $
3
: ! " # % $%
private byte[] GetRandomNumber(int keyLength)
{
return bt;
: ! " # $%
&! ' '"
&! .
?$ " ; '
' Q " " ' Q
8 $ B ' ' " $ ' Q?
' " : " 3" $ $ $ "
= " $ $ ;' $
' B' ; " $
= E ' 5 $ 6
C$ D $9
?$ ; $ ' $$
= ; ; 9 '
B $ ' ;
$ $ $9 7 ;' ' $ $ ;
$ $ 9 $ $ ;$ "
$ 9' " 8 3 ' = '" ; E
$ ' $ 9 " 8
;" ;
= $E $ :' ; $ $ $
' 8 ; $ $
9 $ ' 8 $ ' 9
'
C D $ $' ;
C D $ 3 I 9 $'
+ = 3# 5 = #6;
" 8 " $$ C D"
; $$ 8 $
&!
8 $ $ 5= : 4!*6 $$ ; $ '
♦ 8 3 $9 7 3
♦ 8 $ 3
♦ 8 $ ' 9 3
8 ' C $$ D 7 $ ;
" $$ $ $ 2 $ ;
$ $ 018
$- ;' $$ $ @ ?$
$ $ ; " 8
8 4!* = :
" $ 8 $' B
" ' ; 9
: ! " # $%
" ; ; " 3 ;
$' $ 9
' $ " ' 9 " =4 ;'
018
8 ' 3 ' 018
♦ 4 8 !1
♦ =4 =
+ " $ ( =
8 =4 =
( ' " $ B $ " 3 ;
; $
8 0 , = 5 = 6 %%&;
0 ? $ 8 50? 86 ?$ #
5 ?# 6 . ; " @ 8 0 ' '
$ ; ' = : ;' ' ' 3
$ = 8 ' 3 ' "
4!* $ " 018 ? ' / /" %% 8
" $ 3 5 . ;
- $ = : 6;' 3 $
2 ; 3 '
0? 8 ?# . : 8 $ = : *-; = :&. = :* 8 "
: 7 $ ; $$ $
' E / ; '" ;
' 018 '" $
3 " " 5' $ 9
6 ?$ $ ;
$ ' $ 9 ; $ 9
" 8 3 ' 38 $ $ 3
$
&!% #
= : 4!* 8 ' " $ ' 018
? " ; '
= : 4!*; 3 &
= ' " ;4!* $ $ 018 ;
= : $ $ = ' " ;$ $ ; 4!*
* R$ $ 3
=4 = 3
4 3 $ 5 & -6 2 ; '
$ $ = : ' = ' "
= 9 $ $ 4!* ;' = :
$ "
//alg would actually be configurable in practice
string alg = "MD5";
: ! " # $%
//use System.Text.Encoding to convert to a byte array
byte[] inputText = System.Text.Encoding.Default.GetBytes(plainText);
: ! " # & $%
+! )/ / #" #)* # *' )
+! .
= " $ ; ' $ " Q '
" ;9 $ ;
$ " '
$ ; , ;
" " 3 '
5' 3 $ 6 $
$$ ' ? 3 '
: 5 -$ $ ' 3 $ $
' 6
3 3 $ 9 3
Secret key
8 9 " $ ; 3
Secret key
: ! " # $%
* 6 7/ : 6;
8 9 3 3
1 3
8 9 3
8 ' 3 $ 3 $ 9 ' "
9; 3 " E
8 " $1 2 3 $ 9 <
* 6 7 :6 ;
Initialisation
vector
4 3 $ ; $ JI/
' 9 3
: ! " # * $%
8 ' ? 5? 6 ? 3 $
7 $ 38 ? E $ ;
3 5 3 6
* & ( 9 7 : (6;
# 9 3 3 $ @ 3
' $ 3 $ 9 $
9 ;$ ; 2 1 2' E
3 $ $ 2 E $ 3
$ 9 $ $ 3 7 8 '
"
9 ; - ? . 3 8 - ? E
$. 9 " ; E JI/ ' 9 8 .
9 E ; E C $ D; $
8 $ 9.
8 9 3
I 3 ; " 2;' $$ $
E
*
9 8 9 $
' 3 ; $
$ 018 $ ' 3
* * 6 7*
3 ' $ 3 7 E $ ;
#( > $
* - 5 <
8 7 $ 3 ; $ ; 3
8 7 B .
3 7 $ . 8 $ 3 7
* 5
? " 3 ' ( $
$ " # ' $ 5$
F ;$" $ 6 $' $
3 3 ' 3 ' ?$
3 ' ; 5 $' 6
; ; 3 $ 3
' $$ " ' $ + 19
8 $ $ $ '
♦ $ 9 3
♦ 8 3 $ $ '
? ; $ 3 $ ?
" 3 $ $
# ' $ ; 3 I
; " 3 E 8
" !# #?5 2 #018 6 $ 3
: ! " # - $%
' $
; $ '
! : 3 ;?# $ ' 3
$ 9 " $ 8 " $
' $ 3
+!
8 " " 018
♦ ! 1 5!1 6
♦ 8 !1 5&!1 6
♦ /" 5/ 6
♦ " 1 51 6
* : ;
8 $ ; ' , " $ % - 8
0 2 $ 502 6 , $ !1 ' $ " $"
? %.&; 0 $ $ %. = ' " ; '
"$ ; 0 02 ' $ $
!1 3 ; 3 $- ? 3 7 $*-
* :% ;
&!1 ; '
$$ 3 &!1 $$ " ;' ' 3 ; '
3 ; ' 3
? ; $ 3 ; ' $
: ! " # $%
? 018 ' /@ 4
$ $ $
* #
8 ' / /" / ;/ ;/ * / - ' 3 ;
/
/ $ !1
8 018 ' ; .;*-;- ; ;. ;..;%-; ; ; . 3
' " 3 7 ?$ 3 ;
' ' " 9
+!% #
&!1 $ $
1 3 $' ' " $ ;
" '
' 8 , " " $ !1
" " 4 ;" 0
; " ' $3 B 3
*- 3
$ " !1
8 $$ 3 $ ;
#( > $
8 $$ 3 E B
* 8 " 1 2 351 26;
$ 3 " 3
/ 0 5 & .6
, @ $
8 " 3 ' 5 * 6
4 $ " " 4 !0 $ $
; $$ 3 7 " $ $$
8 E ; 3 8
# $ ! ' # ! '
= 9 $ ' ' $ $ $ $
: ! " # . $%
//convert the text to a byte array
byte[] btPlainText =
System.Text.Encoding.Default.GetBytes(plainText);
MemoryStream ms = null;
using(sa)
{
return ms.GetBuffer();
? $ $ $
$ C D 3' $
@
: ! " # % $%
/ $ $ ; 3 ; ;
'
$ $ 1 56
! 56; $ '
: ! " # $%
1! )/ / #" #)* # *' )
1! .
= ' 3 9 ' $ Q8
$ $
$ ' $$ 3 $
8 " " $ B $ $ 3 $
; 3 $ " ; 3 $
; $ 3 ' 9
;$ $ ; 3 5 3 6
3 3 ' $ 3 5 " 3 6
8 $ 3 9 : $ '
; 3 " 3
$ 3 $ 9< 9 $
3 B 3 $
- 5 8
?3 9 5 / $ 6; 3 " ' '
8 " 3 3
38 3 < " 3 8 3
$ $
-
" " : 5 $
" 6 2 ' " 3 ; $ '
3 " " ' ' $
" 3 8
: ! " # $%
Party A sends a message
Party B has verified the digital
signature
Ajsadvdvcl Ajsadvdvcl
Ajsadvdvcl
Encrypted hash
Hash created decrypted
Asymmetric from message using public
encryption of text key from
text using party certificate
A’s private key
= '" ; ' $$ ; #
( ?$ ; ' " $ ' $ " 3 8
" $ $ #(?
1!
8 $ $$ $ ;'
♦ / ; $ /" ; 8 ' $ %
♦ ! 5! 6B ?# %% 8 ;
" $ 3
8 018 $ / !
1!% !
8 018 " $ '
$ $ 5$ ;J* %6
?$ 018 3 9 ' "
$ C4 4 D 3 9
8 ' ' 3 9
♦ , 3 , 2
♦ , 2 3 F 3
♦ , 2 3 3 ,
♦ I , 3 ' " 3
: ! " # $%
= '" ; ' $ 3
♦ , 3 , 2
♦ , 3
♦ , 3 , 2
♦ , 2 3 , F 3 5, 2 3 ,
F 3 6
♦ , 2 3 3
♦ , ; " 3 5' $
, 2;' , F 3 6
♦ , $ , F 3
♦ , 3 3 ,
♦ , 3 " 3
8 , 3 , , 2 3 3
"/ * # = ! >
7 !
' $ " ( = '" ; '
3 ' $ 8 ; ' ' :
' $ ; 3
$ $
8 ' ' $
' ;( ' ' 3' "
;
" ; $ ' #? I4 5 - 6 ' '
#? 3 $ $ ; E $
' 5 $ !)) #? I4 ' 6
/ I 1#( 19 ;
$ 3 3 9 $ 3
I 1# $ C 3 D ' C 3
D 8 $$ 3 3/ $ 9 8
/ ' " $ 9
4 $ 018 ; 9
" $ ' 3 3 " $$ , '
+ " 1 3 ; J* % $ @
" ; J* % $ " 4 $+ "
8 " $ $ ; 8 " 3 $
J* % $ 9 $ $ ; : $
$ 3
8 '" $ 5+ 6' '$ $
$ $ $ ;018 9 #? $+ ' "
$ "
♦ J4) ! ' 3
' " $
: ! " # & $%
♦ $ $ 3 9
$' ; " $+
= '" ; ;
9 $ " ;
1!& *" /
#? I4 I4 ' + ' #?$
? ' ' $ ;' "
E $ 3 9
= 9 $ 4 !0
!
"
"
"
"
# $ #
%
8 #? I4 $
<<''' $ < ' < 9Q ?!N.- & : . &: - $: *:
$$.. *.%-$-H! ) N
8 2$ 9 $ #? I4; "
$ 018
= 9 ' #? I4 ; 2 F
$ $
//name of certificate to use for signature
string certName = "fred bloggs";
//create an instance of the store class
Store certStore = new StoreClass();
//open the current user store
certStore.Open(CAPICOM_STORE_LOCATION.CAPICOM_CURRENT_USER_STORE,
"MY",
CAPICOM_STORE_OPEN_MODE.CAPICOM_STORE_OPEN_READ_ONLY);
//certificate object to hold fred bloggs's certificate
Certificate x509cert = null;
//iterate through certs to find certificate
: ! " # $%
foreach (Certificate cert in certStore.Certificates)
{
//obtain the name of the certificate
string name =
cert.GetInfo(CAPICOM_CERT_INFO_TYPE.CAPICOM_CERT_INFO_SUBJECT_SIMPL
E_NAME);
//is this the certificate we wish to use?
if (name == certName)
{
x509cert = cert;
}
}
//create a signer
Signer messageSigner = new SignerClass();
//set the certificate to use
messageSigner.Certificate = x509cert;
//create a signed data class
SignedData sd = new SignedDataClass();
//text to sign
sd.Content = "This is the piece of text that requires signing";
//sign the message
string signedMessage = sd.Sign(messageSigner,
false,
CAPICOM_ENCODING_TYPE.CAPICOM_ENCODE_BASE64);
8 ' 9; 9 $ 8
#( >
#( > $ ;' ' ' $
= ' ' " $ " $ -
Signer s = sr;
: ! " # * $%
CAPICOM_CHECK_FLAG.CAPICOM_CHECK_TRUSTED_ROOT |
CAPICOM_CHECK_FLAG.CAPICOM_CHECK_TIME_VALIDITY |
CAPICOM_CHECK_FLAG.CAPICOM_CHECK_SIGNATURE_VALIDITY |
CAPICOM_CHECK_FLAG.CAPICOM_CHECK_ONLINE_REVOCATION_STATUS ;
1!+ 3 .
" " $ ' E $ $ ?
' 3
$ 8 $ B
3 $ E ' $ 8
/) $
?$ 3 " $ 5 I $
# 6; '
9 ' + ' $ 5$ $ #? 6
♦ 8 E $ ' $
♦ 8 ) 3 # $ ' ' " 3
♦ $ ' E
8 $ $ " ;
" 3 '
= '" ; ' 3 $ $
? $'
$' 3 ! $ $ $
# $S
1!1 #
! $ $ I $ 3
9
+ $ 3 9 ; 3
: ! " # - $%
4 3 / I 1#( 19 $ 3 9 $ 018
: ! " # $%
-! 4$" 5 $"
8 " $ 3 ' '
" A !! #
1 # $ $ "
4 $ 3 $ $
5 & *6
?$ ;
, : , #? I4 5 - 6
4 3 " $ ' $
" 3 B $ " #(?5 -6
1 &!1 ;' 3 5 *6
$
' $ ; ;
5 * &6
4 3 3 7; ;? $ 5 & -;
* &6
, #? I4 5 - 6
0 "
# $ #(? $ ;
?$ #(? $ $ ; '
$ B ' $ $ 5 - -6
4 3 / $
: ! " # . $%
0! 6"6," # *' )
♦ 0 ' 3 ' + ' 8 " G G ;#
:+
♦ # 018 ; G ;# IF
/
♦ # G G ;) ;4 ! ;/ / ;G$$ # ;
#
♦ H $ 19 # I #
♦ 4 = ' ;! " ) 2 ;# 4 $#
♦ ! 4 $+ ' 0 ' 3 # 4 $#
♦ 4 !0 # $ ! # ! '
♦ 4 !0 ? #? I4 G )
♦ 0 ? $ 8 50? 86 '
<< "< 8 3< < @ <
♦ 0 ' 3 1 <<''' 3 < <
♦ ? " $/ @ 0 ;G ( ; $ ) 3 ;2 ;
43 ;! " + ;! +
♦ 2 #018 :4 $# # G! 4 ; 9
4 3 ; ;4 !
♦ / ' : <<''' <
: ! " # % $%