This article is
From ASP.NE T 1.1 to ASP.NET 2.0 Supplements of cookie issues to be considered, through example code, how to get reflex in ASP.NET 1.1 and ASP.NET 2.0 to get randomly generated cookie encryption and verification keys.
ASP.NET 1.1 sample code:
Object
MachineKeyConfig
=
HttpContext.current.getconfig
"
System.Web / MachineKey
"
);
//
Get the instance of System.Web.Configuration.machineKey MachineKeyConfig, MachineKeyConfig is the nested class of MachineKey
Type MachineKeyType
=
MachineKeyConfig.gettype (). assmbly.gettype
"
System.Web.configuration.MachineKey
"
);
//
Get the type of system.web.configuration.machineKey
BindingFlags BF
=
Bindingflags.nonpublic
|
Bindingflags.static;
//
Set the binding sign
MethodInfo ByteArraytohexString
=
MachineKeyType.getMethod
"
ByteaRrayToHexString
"
, BF);
//
ByteaRrayToHexString method in MachineKey is obtained by reflection, which is used to convert byte arrays to a string representative represented by
Byte [] ValidationKey
=
(Byte []) MachineKeytype.Getfield (
"
S_ValidationKey
"
, bf) .GetValue (MachineKeyConfig);
//
Get the verification key byte array
Symmetricalgorithm Algorithm
=
(Symmetricalgorithm) MachineKeytype.Getfield (
"
s_odes
"
, bf) .GetValue (MachineKeyConfig); Byte [] DecryptionKey
=
Algorithm.Key;
//
Get an encryption key byte array
String
ValidationKey
=
(
String
) byteaRrayToHexString.invoke
NULL
,
New
Object
[] {ValidationKey, ValidationKey.length});
//
Convert the verification key byte array to a string representative of 16
String
DecryptionKey
=
(
String
) byteaRrayToHexString.invoke
NULL
,
New
Object
[] {DecryptionKey, DecryptionKey.Length});
//
Convert the encryption key byte array to a string representative of 16
ASP.NET 2.0 sample code:
System.Web.configuration.MachineKeySection MachineKeysection
=
New
System.Web.configuration.machineKeySection ();
//
Create a MACHINEKEYSECTION instance, ASP.NET 2.0 replaces MachineKey in ASP.NET 1.1 in ASP.NET 2.0, and can be directly accessed and not protected by INTERNAL.
Type Type
=
Typeof
System.Web.configuration.machineKeySection;
//
Or MachineKeySecion.gettype ();
PropertyInfo PropertyInfo
=
TYPE.GETPROPERTY
"
ValidationKeyinternal
"
Bindingflags.nonpublic
|
Bindingflags.instance); byte [] ValidationKeyArray
=
(Byte []) PropertyInfo.getValue (MachineKeySection,
NULL
);
//
Get randomly generated verification key byte arrays
PropertyInfo
=
TYPE.GETPROPERTY
"
DecryptionKeyinternal
"
Bindingflags.nonpublic
|
Bindingflags.instance; byte [] DecryptionKeyArray
=
(Byte []) PropertyInfo.getValue (MachineKeySection,
NULL
);
//
Get randomly generated encryption key authentication arrays
MethodInfo ByteArraytohexString
=
TYPE.GETMETHOD
"
ByteaRrayToHexString
"
BindingFlags.Static
|
Bindingflags.nonpublic);
//
ByteaRrayToHexString method in MachineKeySection is obtained by reflection, the method is used to convert byte arrays to a string representative
String
ValidationKey
=
(
String
) byteaRrayToHexString.invoke
NULL
,
New
Object
[] {ValidationKeyArray, ValidationKeyArray.length});
//
Convert the verification key byte array to a string representative of 16
String
DecryptionKey
=
(
String
) byteaRrayToHexString.invoke
NULL
,
New
Object
[] {DecryptionKeyArray, DecryptionKeyArray.length});
//
Convert the encryption key byte array to a string representative of 16
//
Author Blog:
http://dudu.cnblogs.com