C#/.NET 风格的面向对象 JavaScript 类库






4.97/5 (160投票s)
部分复制了 Microsoft .NET Framework 结构和功能的 JavaScript 类库。
- 最新源代码: https://github.com/JocysCom/JsClasses
- 下载 (3.2MB): https://github.com/JocysCom/JsClasses/archive/master.zip
引言
欢迎使用 C#/.NET 风格的面向对象 JavaScript 类库。这个 JavaScript 库包含哈希(MD5、HMACMD5、SHA1、HMACSHA256、SHA256)、加密(AES、RSA)以及一些其他与 Microsoft .NET Framework 兼容的 JavaScript 类。服务器端的示例是符合 FIPS(联邦信息处理标准)的。您可以使用这些类进行客户端与客户端之间的端到端加密。
它允许您编写与 C# 100% 相同的 JavaScript 代码。例如,下面这段 JavaScript 代码可以将 Unicode 文本转换为字节,然后从中创建 Base64 字符串。
var text = "おはようございます – Good morning!";
var bytes = System.Text.Encoding.UTF8.GetBytes(text);
var base64 = System.Convert.ToBase64String(bytes);
// base64: 44GK44Gv44KI44GG44GU44GW44GE44G+44GZIOKAkyBHb29kIG1vcm5pbmch
背景
我喜欢用面向对象的方式用 JavaScript 编程。但有一天,我决定将我的代码提升到一个新的水平,让我的 JavaScript 代码尽可能像 C#。于是我做了以下几点:
- 开始在我的 JavaScript 中使用 .NET 编码标准。您可以在 MSDN 上找到它们 - .NET Framework:命名指南。
- 将 .NET 中一些有用的类和方法移植到 JavaScript 中,并保持相同的类名和属性名。部分代码是独立编写的,部分代码是从互联网上借用的,还有部分代码是直接从 C# 移植过来的。
- 开始在 JavaScript 中使用 XML 注释。Visual Studio 2008 对它们的支持不是很好,但我希望未来支持会更好。
https://www.jocys.com/Common/JsClasses/Documents:
优点
使用 C# .NET 风格编写 JavaScript 代码具有以下优点:
- 任何 C# 开发人员都能立即理解 JavaScript 代码的用途。
- 您无需为新 JavaScript 类编写帮助文档,因为 Microsoft 已经完成了。
- 当将一个新类从 C# 移植到 JavaScript 时,您无需考虑如何命名它或放在哪里。您只需要查找 C# 中的同名类并使用相同的命名即可。
- 您拥有的 JavaScript 类越多,移植新类的难度就越小。
- 通过使用 C# 类作为主要参考,不同开发人员将更容易编写 JavaScript 类并将其集成到一个大型类库文件中。这是因为通过查看某个 C# 类,开发人员就知道函数需要支持/产生什么样的输入和输出,而无需与其他开发人员协调。
- 还有更多...
示例:哈希算法 - HMAC-MD5 校验和
用于创建 HMAC-MD5 校验和的 C# (3.0) 代码
// Create HMAC-MD5 Algorithm.
var hmac = new System.Security.Cryptography.HMACMD5();
// Convert string to array of bytes.
var key = System.Text.Encoding.UTF8.GetBytes("test key");
var data = System.Text.Encoding.UTF8.GetBytes("test data");
// Compute hash.
var hashBytes = hmac.ComputeHash(key, data);
// Convert to HEX string.
var hex = System.BitConverter.ToString(hashBytes);
// Convert to GUID so you can store it inside database.
var guid = new System.Guid(hashBytes);
使用此 JavaScript 库编写的 HMAC-MD5 校验和代码
包含 JavaScript
- System.js
- System.BitConverter.js
- System.Text.js
- System.Security.Cryptography.MD5.js
- System.Security.Cryptography.HMACMD5.js
// Create HMAC-MD5 Algorithm.
var hmac = new System.Security.Cryptography.HMACMD5();
// Convert string to array of bytes.
var key = System.Text.Encoding.UTF8.GetBytes("test key");
var data = System.Text.Encoding.UTF8.GetBytes("test data");
// Compute hash.
var hashBytes = hmac.ComputeHash(key, data);
// Convert to HEX string.
var hex = System.BitConverter.ToString(hashBytes);
// Convert to GUID so you can store it inside database.
var guid = new System.Guid(hashBytes);
正如您所见,代码是 100% 相同的。SHA-1 和 SHA-256 哈希算法类也可用。
- System.Security.Cryptography.SHA1.htm
- System.Security.Cryptography.SHA1.aspx
- System.Security.Cryptography.SHA256.htm
- System.Security.Cryptography.SHA256.aspx
示例:对称算法 - AES-256 加密
在线示例
AES-256 加密的 JavaScript 代码与 C# 代码相同,只有一个小小的区别。在 JavaScript 中,我需要使用 "new System.Byte(length)
"(第 20 行)而不是简单的 "new byte[length]
"。当然,我可以通过在 JavaScript 中进行 "byte = System.Byte
" 的类别名来减小这种差异。您可以使用 "System.Security.Cryptography.AesCryptoServiceProvider
" .NET 类,而不是 "RijndaelManaged
" 类,来解密/加密在强制执行联邦信息处理标准(FIPS)的计算机上的数据。
包含 JavaScript
- System.js
- System.IO.js
- System.Text.js
- System.Convert.js
- System.BitConverter.js
- System.Security.Cryptography.js
- System.Security.Cryptography.SHA1.js
- System.Security.Cryptography.HMACSHA1.js
- System.Security.Cryptography.RijndaelManaged.js
// Turn input string into a byte array.
var input = System.Text.Encoding.UTF8.GetBytes("Plain Text");
// Create an instance of the Rijndael class.
var cipher = new System.Security.Cryptography.RijndaelManaged();
// Calculate salt to make it harder to guess key by using a dictionary attack.
var passwordBytes = System.Text.Encoding.UTF8.GetBytes("password");
var hmac = new System.Security.Cryptography.HMACSHA1(passwordBytes);
var salt = hmac.ComputeHash(passwordBytes);
// Generate Secret Key from the password and salt.
// Note: Set number of iterations to 10 in order for JavaScript example to work faster.
var secretKey =
new System.Security.Cryptography.Rfc2898DeriveBytes(passwordBytes, salt, 10);
// Create a encryptor from the existing SecretKey bytes by using
// 32 bytes (256 bits) for the secret key and
// 16 bytes (128 bits) for the initialization vector (IV).
var key = secretKey.GetBytes(32);
var iv = secretKey.GetBytes(16);
// Get cryptor as System.Security.Cryptography.ICryptoTransform class.
var cryptor = cipher.CreateEncryptor(key, iv);
// Create new Input.
var inputBuffer = new System.Byte(input.length);
// Copy data bytes to input buffer.
System.Buffer.BlockCopy(input, 0, inputBuffer, 0, inputBuffer.length);
// Create a MemoryStream to hold the output bytes.
var stream = new System.IO.MemoryStream();
// Create a CryptoStream through which we are going to be processing our data.
var mode = System.Security.Cryptography.CryptoStreamMode.Write;
var cryptoStream = new System.Security.Cryptography.CryptoStream(stream, cryptor, mode);
// Start the crypting process.
cryptoStream.Write(inputBuffer, 0, inputBuffer.length);
// Finish crypting.
cryptoStream.FlushFinalBlock();
// Convert data from a memoryStream into a byte array.
var outputBuffer = stream.ToArray();
// Close both streams.
stream.Close();
cryptoStream.Close();
// Convert encrypted data into a base64-encoded string.
var base64String = System.Convert.ToBase64String(outputBuffer);
// base64String = laFf3eKu9tzB2XksJjd8EVM3PA9O30wz0Y+X3nyelW4=
示例:非对称算法 - RSA 加密
RSA JavaScript 类与 Microsoft .NET Framework 兼容。这意味着您可以用 JavaScript 加密/解密数据,并使用 "System.Security.Cryptography.RSACryptoServiceProvider
" Microsoft .NET Framework 类进行加密/解密。您可以导出、导入、生成 RSA 密钥,并使用“直接加密(PKCS#1 v1.5)”和“OAEP 填充(PKCS#1 v2)”。
RSA 允许您在没有安全套接层(SSL)的情况下安全地加密和提交数据。您可以查看 System.Security.Cryptography.RSA.aspx 示例。这只需 3 个简单步骤即可完成:
- 步骤 1:服务器生成 RSA 密钥,并仅将公钥显示给网页上的用户。
注意:私有 RSA 密钥存储在服务器端,只有服务器才能解密提交的数据。 - 步骤 2:用户在文本框中输入密码或其他敏感数据。
- 步骤 3:用户单击 [提交] 按钮。JavaScript 将使用 RSA 公钥加密密码,用加密的 Base64 代码替换纯文本,然后将 Web 表单提交到服务器。
注意:然后,您可以使用强密码和 AES 对称加密来提交额外数据。这样,您将用军事级加密来保护敏感数据。
在线示例
包含 JavaScript
- System.js
- System.IO.js
- System.Text.js
- System.Convert.js
- System.BitConverter.js
- System.Security.Cryptography.js
- System.Security.Cryptography.SHA1.js
- System.Security.Cryptography.HMACSHA1.js
- System.Security.Cryptography.RSA.js
RSA 加密的 C# 和 JavaScript 代码是 100% 相同的。
// Text to encrypt and decrypt.
var text = "plain text";
// Use OAEP padding (PKCS#1 v2).
var doOaepPadding = true;
// RSA 512-bit key: Public (Modulus), Private (D) and CRT (P, Q, DP, DQ, InverseQ).
var xmlParams =
"<RSAKeyValue>" +
"<Modulus>pxtmFnrGI6Sb8ziyY+NRUDuQ4b/ETw5WabQ4daFQqzsCEr/6J/
LLBU/2D5mO5/Wu5U/Rya1E55aYFZeaZMNqAw==</Modulus>" +
"<Exponent>AQAB</Exponent>" +
"<P>2TsVXWPEvDIJv/gd2rX9k0UOyXuaYgoAchIH6vUicis=</P>" +
"<Q>xO4+OYREQfqYRQK7y73+RaUG0IxobT0OQ0c+Ok2hc4k=</Q>" +
"<DP>K7/xgpiIU9rECeyfnp/OjS14V+3T3vDivBaTj6eFI3c=</DP>" +
"<DQ>K4N9ClZ4gp+tn6oP9t//XEIvtEsiE+kmyqTmUhmvMAk=</DQ>" +
"<InverseQ>p7o4BOlKZQZ693R1ViZ66y5gTjUkNNTd2za7/1YGBCs=</InverseQ>" +
"<D>XZqFVrYy4qhECruJgVZFp/GVuD5Y0gev88nVjl5r911QT+
I8vgJSklTso7jTlpMtf2oe7UZ0WRWEtgPS3tZn4Q==</D>" +
"</RSAKeyValue>";
// ------------------------------------------------
// RSA Keys
// ------------------------------------------------
var rsa = new System.Security.Cryptography.RSACryptoServiceProvider();
// Import parameters from XML string.
rsa.FromXmlString(xmlParams);
// Export RSA key to RSAParameters and include:
// false - Only public key required for encryption.
// true - Private key required for decryption.
// Export parameters and include only Public Key (Modulus + Exponent)
// required for encryption.
var rsaParamsPublic = rsa.ExportParameters(false);
// Export Public Key (Modulus + Exponent) and include Private Key (D)
// required for decryption.
var rsaParamsPrivate = rsa.ExportParameters(true);
// ------------------------------------------------
// Encrypt
// ------------------------------------------------
var decryptedBytes = System.Text.Encoding.UTF8.GetBytes(text);
// Create a new instance of RSACryptoServiceProvider.
rsa = new System.Security.Cryptography.RSACryptoServiceProvider();
// Import the RSA Key information.
rsa.ImportParameters(rsaParamsPublic);
// Encrypt byte array.
var encryptedBytes = rsa.Encrypt(decryptedBytes, doOaepPadding);
// Convert bytes to base64 string.
var encryptedString = System.Convert.ToBase64String(encryptedBytes);
// ------------------------------------------------
// Decrypt
// ------------------------------------------------
// Convert base64 string back to bytes.
encryptedBytes = System.Convert.FromBase64String(encryptedString);
// Create a new instance of RSACryptoServiceProvider.
rsa = new System.Security.Cryptography.RSACryptoServiceProvider();
// Import the RSA Key information.
rsa.ImportParameters(rsaParamsPrivate);
// Decrypt byte array.
decryptedBytes = rsa.Decrypt(encryptedBytes, doOaepPadding);
// Get decrypted data.
text = System.Text.Encoding.UTF8.GetString(decryptedBytes);
// ------------------------------------------------
// Generate new RSA Key pair
// ------------------------------------------------
// Specify RSA key size.
var keySize = 512;
// Create a new instance of RSACryptoServiceProvider.
rsa = new System.Security.Cryptography.RSACryptoServiceProvider(keySize);
// Export the RSA Key information as XML string.
// false - Only public key required for encryption.
// true - Private key required for decryption.
xmlParams = rsa.ToXmlString(true);
示例:移动应用、加密和压缩
RSA 加密对于移动设备(jQuery Mobile)非常有用。您可以以加密状态将属于客户端的敏感信息(如信用卡、地址、密码等)存储在设备本身。数据只能通过提交到存储 RSA 私有解密密钥的服务器来解密。即使客户端设备或服务器磁盘丢失,数据也是安全的。客户端无法解密数据,服务器端也没有存储敏感信息。压缩可用于减少客户端数据流量。
在线示例
示例:用户界面
该库包含一些用户界面类。
function firstButton_Click(){
Trace.Write("First Button Click");
}
function secondButton_Click(){
Trace.Write("Second Button Click");
}
function Window_Load(){
Trace.IsEnabled = true;
Trace.Write("Start Demo");
// Create toolbar.
var toolBar = new System.Web.UI.Interface.ToolBar("MyToolBar");
// Add toolbar to document.
document.body.appendChild(toolBar.Node);
// Create Bar.
var bar = new System.Web.UI.Interface.Bar("MainBar", document, "Bar Title");
toolBar.Add(bar);
// Create first button.
var firstButton = new System.Web.UI.Interface.Button("FirstButton", document);
firstButton.SetText("First");
firstButton.SetImage("Images/Icons/Options-16x16.png");
firstButton.SetTitle("First Button");
firstButton.customAction = firstButton_Click;
bar.Add(firstButton);
// Create second button.
var secondButton = new System.Web.UI.Interface.Button("SecondButton", document);
secondButton.SetText("Second");
secondButton.SetImage("Images/Icons/Trace.16x16.png");
secondButton.SetTitle("Second Button");
secondButton.customAction = secondButton_Click;
bar.Add(secondButton);
}
window.onload = Window_Load;
它将在网页上生成此界面
要求
JavaScript 的类型非常有限
JavaScript 对象 | typeof(Object) |
对象 | 'object ' |
数组 | 'object ' |
函数 | 'function ' |
字符串 | 'string ' |
数字 | 'number ' |
布尔值 | 'boolean ' |
null | 'object ' |
未定义 | 'undefined ' |
但是,通过组合现有类型,我们可以创建类似于 C# 的 JavaScript 对象。例如:
C# 类型 | JavaScript 类型 |
public | 使用 "this. " 前缀声明的属性: this.Name = new String; |
私有的 | 使用 "var " 前缀声明的属性: var name = new String; |
类 | this.[ClassName] = function(){... ,末尾没有 "return value;" |
void | 末尾没有 "return value;" 的函数 |
short /Int16 | 范围在 [-2^15, 2^15-1] 之间的整数。 |
int /Int32 | 范围在 [-2^31, 2^31-1] 之间的整数。 |
long /Int64 | 范围在 [-2^63, 2^63-1] 之间的整数(需要 BigInteger 类)。 |
byte | 范围在 [0, 255] 之间的整数: var b = 14; |
sbyte | 范围在 [-128, 127] 之间的整数: var sb = -14; |
bytes[] | 用范围在 [0-255] 之间的整数填充的 Array() 。 |
bit | 数字:0 或 1 |
bit[] | 用范围在 [0-1] 之间的整数填充的 Array() 。 |
char | 包含单个字符的 String 。用单引号声明: var c = 's' |
char[] | 填充了单个字符的 Array() 。var chars = new Array(1); chars[0] = 's'; |
object | 使用 "{ } " 声明的参数: var o = {}; |
enum | 带有 "Enum " 后缀并用逗号分隔值的对象: this.TriStateEnum = { Unknown: -2, False: 0, True: 1 } |
EventHandler | 带有 "sender " 和 "e " 参数的函数: function(sender, e) 或 this.Click(sender, e) |
数字:JavaScript 中的所有数字都是 64 位(8 字节)浮点数(双精度:1 位符号、11 位指数、52 位尾数)。没有 Double
、Single
/Float
、Boolean
、Int16
、UInt16
、Int32
或 UInt32
。但是,您可以使用 System.BitConverter JavaScript
类的 public static
方法来将同一个 JavaScript 数字视为不同的类型。
// Convert number to [0x00, 0x00, 0xCC, 0xCC] array.
var bytes = System.BitConverter.GetBytes(-859045888, System.TypeCode.Int32);
// Convert bytes back to -859045888.
var n = System.BitConverter.ToInt32(bytes, 0);
System.BitConverter
JavaScript 类支持小端序(默认)、大端序字节序和数字数组。System.BitConverter
类在编码/解码/加密/解密类中非常有用。请注意,在使用 GetBytes(value, typeCode)
方法时,您需要通过使用 System.TypeCode
枚举值来指定数字类型(该枚举位于 System.js 文件中)。
我添加了 System.BigInt
类(与 .NET 内部 System.Security.Cryptography.BigInt
类相同)。它代表一个任意大的带符号整数,其值理论上没有上限或下限。这意味着您可以在 JavaScript 中对 Godzilla 比例的数字进行加、减、乘、除运算,这在客户端加密中可能很有用。
// Increase global System.BigInt size to 512 bytes.
// BigInt will act like System.Int4096 (default is System.Int1024).
System.BigInt.MaxBytes = 512;
// Create big integer from hexadecimal number.
var n1 = new System.BigInt("0x010203040506");
// Create big integer from decimal number.
var n2 = new System.BigInt("-280422911905295");
// Multiply them.
var n3 = System.BigInt.Multiply(n2, n1);
// Store result in various forms.
var h = n3.ToHex() // -0x01010C234779B3FAEED09F5A
var d = n3.ToDecimal() // -310751254825142252681076570
var bytes = n3.Elements // A6602F11054C86B8DCF3FEFEFFFFFF...
注意:您可以在 JavaScript XML 注释中使用 <param type="byte[]" name="data">...</param>
来指定输入数据的类型,以及 <returns type="double">...</returns>
- 用于输出。
JavaScript IntelliSense
Visual Studio 2010 内置支持 JavaScript IntelliSense。这意味着如果您打开一个文件,将光标放在文件末尾,然后输入 "System.
",那么在点之后,Visual Studio 将弹出一个菜单,其中包含 System
命名空间的所有可用属性。
System.Type.Inherits
方法允许从继承类内部使用 IntelliSense。
好消息是 Microsoft 正朝着正确的方向前进。坏消息是 JavaScript IntelliSense 仅适用于特定的 JavaScript 编码风格,有时需要变通方法。换句话说,它以神秘的方式工作,或者根本不起作用 :)。我的代码也需要一些升级。
安装
将源文件存档解压到您网站的 webroot (/) 文件夹。
示例:System.Security.Password
在源代码中,您可以找到示例(Examples/),包括密码生成器示例。您可以运行它:
- 在您的网页浏览器中:Examples/System.Security.Password.htm
- 作为 Windows HTML 应用程序:Examples/System.Security.Password.hta
- 或在线:https://www.jocys.com/Common/JsClasses/Examples/System.Security.Password.htm
要提出建议或报告错误,请发送邮件至 evaldas@jocys.com。
历史
- 2017-09-08 - 修复了 System.Web.debug.js 类中的一个 bug,更新了安全和示例。
- 更新了示例以符合 FIPS 标准。
System.Security.Cryptography.AES.aspx
System.Security.Cryptography.AES.aspx.cs
System.Security.Cryptography.aspx
System.Security.Cryptography.aspx.cs
System.Web.Mobile.htm
- 更新了示例以符合 FIPS 标准。
- 2017-05-25 - 重构了部分代码。修复了 TraceLog 时间格式问题。
- 新类
System.Security.Cryptography.SHA256
System.Security.Cryptography.HMACSHA256
- 新示例
- System.Security.Cryptography.SHA256.htm
- 新类
- 2017-05-21 - 修复了与 ASP.NET AJAX Control Toolkit 的兼容性问题。解决了 Visual Studio ESLint 报告的数百个错误和警告。TraceLog 现在使用 DIV 而不是 IFRAME。
- 2011-08-29 - 添加了 GZip 压缩类和移动应用程序的 Web 服务加密示例。
- 新类
System.IO.Compression.DeflateInput
System.IO.Compression.HuffmanTree
System.IO.Compression.FastEncoderWindow
System.IO.Compression.FastEncoder
System.IO.Compression.Deflater
System.IO.Compression.Inflater
等等...
- 新示例
- System.Web.Mobile.htm
- System.IO.Compression.htm
- System.IO.Compression.aspx
- 新类
- 2011-07-27 - 修复了 RSA 加密 bug。添加了 JavaScript IntelliSense "类型图标" 支持。其他各种更改。项目文件更新至 Visual Studio 2010。修复了在 Google Chrome 上运行的代码。为了让演示在本地(URL 中带有 file:///)运行,您必须使用 --allow-file-access-from-files 选项启动 Chrome。
- 新类
System.IO.Stream
System.Diagnostics.TraceListener
- 新类
- 2010-02-24 - 添加了 RSA 加密和单元测试类。
- 新类
System.Security.Cryptography.RSAParameters
System.Security.Cryptography.RSACryptoServiceProvider
System.Security.Cryptography.PKCS1Padding
System.Security.Cryptography.PKCS1MaskGenerationMethod
System.Security.Cryptography.HashAlgorithm
System.TestTools.UnitTesting.Assert
- 新示例
- System.Security.Cryptography.RSA.aspx
- System.Security.Cryptography.RSA.htm
- System.TestTools.UnitTesting.htm
- 新类
- 2009-06-21 - 添加了新的
System.BigInt
(.js 文件)类及示例。- Examples/System.BigInt.htm
- Examples/System.BigInt.aspx
- 2009-03-14 - PassGen 现在可以再次在 Internet Explorer 中工作。修复了 FX 的一些跨域安全问题。调整为更好地与 "Microsoft AJAX Framework" 脚本(System.Web.Extensions.dll/MicrosoftAjax.debug.js 的资源)配合使用。Microsoft 在那里有一些很棒的 JavaScript 类。
- 2009-02-04 - 新的修复和新的 bug。将所有内容移至 /Common/JsClasses 文件夹。最新的源代码可在 SVN 服务器上获取(见上文)。
- 2008-03-14 - 一些 bug 修复。
- 新类
System.Web.UI.HtmlControls.TextBox.CommandLine
- 将输入转换为命令行。稍后将用于创建纯 JavaScript 控制台和聊天应用程序。
- 更新了示例(Examples/ 文件夹)。
- System.Web.UI.HtmlControls.TextBox.CommandLine.htm
- System.Web.UI.ShortKeys/System.Web.UI.ShortKeys.htm - 展示如何在网页上覆盖和使用自定义的 Windows 键盘布局。还可以捕获按键并执行非默认的自定义操作。
- 新类
- 2008-01-27
- 新的枚举
System.TypeCode
- 新类
System.Collections.BitArray
System.BitConverter
(System.BitConverter.js)类已更新方法:System.BitConverter.GetByte(value, typeCode)
- 从Double
、Single
、Boolean
、Int16
、UInt16
、Int32
、UInt32
获取字节。您需要使用System.TypeCode
的值来指定 JavaScript 如何处理数字。
您还可以通过以下方法将byte[]
转换回数字:System.BitConverter.ToDouble(bytes, startIndex)
System.BitConverter.ToSingle(bytes, startIndex)
System.BitConverter.ToBoolean(bytes, startIndex)
System.BitConverter.ToInt16(bytes, startIndex)
System.BitConverter.ToUInt16(bytes, startIndex)
System.BitConverter.ToInt32(bytes, startIndex)
System.BitConverter.ToUInt32(bytes, startIndex)
Int64
和UInt64
类型尚未可用,因为 JavaScript 的 64 位(8 字节)浮点数只有 52 位尾数,这意味着无法正确处理 64 位整数(可以通过重用BigInt
类来实现)。
- 更新了示例
- System.BitConverter.htm
- System.BitConverter.aspx
- 新的枚举
- 2008-01-13 - 修复了一些 bug 并添加了新的 JavaScript 类。
- System.Security.Cryptography.js 文件
System.Security.Cryptography.Rfc2898DeriveBytes
System.Security.Cryptography.ICryptoTransform
System.Security.Cryptography.RNGCryptoServiceProvider
System.Security.Cryptography.CryptoStrea
- System.Security.Cryptography.RijndaelManaged.js 文件(AES 加密)
System.Security.Cryptography.RijndaelManaged
- System.js 文件(新方法)
System.Buffer.BlockCopy
System.Array.Reverse
System.Array.Clear
System.Array.GetMultiDimensional
System.Array.FillMultiDimensiona
- 创建了示例(Examples/ 文件夹)
- System.Security.Cryptography.AES.htm
- System.Security.Cryptography.AES.aspx
- System.Security.Cryptography.htm
- System.Security.Cryptography.aspx
- 更新了部分界面元素/类/示例为 Office 2007 风格。
- System.Web.UI.Interface.ToolBar.htm
- System.Web.UI.Interface.TabStrip.htm
System.BitConverter
静态类的方法已更新。
- System.Security.Cryptography.js 文件
- 2007-12-15 - 新的 '
System.IO.MemoryStream
' 类。我稍后将使用它与对称加密算法结合使用,以便在没有 ActiveX 的情况下,可以在两个 Web 浏览器客户端之间进行加密。
现在您可以更轻松地在 JavaScript 中获取用 0 数字填充的byte[]
数组。
var bytes = new System.Byte(10);
这相当于 C# 中的 'byte[] bytes = new System.Byte[10];
' 或 'byte[] bytes = new byte[10];
'。您也可以定义用零填充的多维数组。
var bytes = new System.Byte(16,16); bytes[4][5] = 10;
- 2007-12-12 - 创建。修复了示例中的一些链接。上传了新的源代码。Alex's Code Syntax Highlighter 已更新到 1.5.1 版本。