Add XCode skills for entity caching, ORM, and sharding ETL
|
# NewLife.Core å®‰å…¨åŠ å¯†æ¨¡å¼è¯æ®
> æ¥æºï¼š`Doc/安全扩展SecurityHelper.md`(GBK,代ç 片段å¯è¯»ï¼‰
> æ ¸å¿ƒ API 从文档代ç å—䏿¢å¤ï¼Œä»¥ä¸‹å†…容与æºç 一致。
---
## 1. 哈希 API(从文档代ç å—æ¢å¤ï¼‰
```csharp
// MD5
Byte[] MD5(this Byte[] data)
String MD5(this String data, Encoding? encoding = null) // → 32ä½åå…进制
String MD5_16(this String data, Encoding? encoding = null) // → 16ä½ï¼ˆä¸8å—节)
Byte[] MD5(this FileInfo file)
// SHA æ—(带 key 傿•°æ—¶ä¸º HMAC,ä¸ä¼ 或 null 为普通哈希)
Byte[] SHA1(this Byte[] data, Byte[]? key)
Byte[] SHA256(this Byte[] data, Byte[]? key = null)
Byte[] SHA384(this Byte[] data, Byte[]? key)
Byte[] SHA512(this Byte[] data, Byte[]? key)
// CRC
UInt32 Crc(this Byte[] data)
UInt16 Crc16(this Byte[] data)
// Murmur128(éžåŠ å¯†ï¼Œé€‚åˆå“ˆå¸Œè¡¨ï¼‰
Byte[] Murmur128(this Byte[] data, UInt32 seed = 0)
```
**命å空间**:`using NewLife;`(扩展方法全部在æ¤å‘½å空间)
---
## 2. å¯¹ç§°åŠ å¯† API(从文档代ç å—æ¢å¤ï¼‰
```csharp
// 内å˜ç‰ˆï¼ˆpass 自动填充到算法所需密钥长度)
Byte[] Encrypt(this SymmetricAlgorithm sa, Byte[] data,
Byte[]? pass = null,
CipherMode mode = CipherMode.CBC,
PaddingMode padding = PaddingMode.PKCS7)
Byte[] Decrypt(this SymmetricAlgorithm sa, Byte[] data,
Byte[]? pass = null,
CipherMode mode = CipherMode.CBC,
PaddingMode padding = PaddingMode.PKCS7)
// æµå¼ç‰ˆï¼ˆå¤§æ–‡ä»¶ï¼‰
SymmetricAlgorithm Encrypt(this SymmetricAlgorithm sa, Stream instream, Stream outstream)
SymmetricAlgorithm Decrypt(this SymmetricAlgorithm sa, Stream instream, Stream outstream)
// 直接转æ¢ï¼ˆä½Žå±‚)
Byte[] Transform(this ICryptoTransform transform, Byte[] data)
```
---
## 3. è·¨è¯è¨€å¯¹æŽ¥æ³¨æ„(文档说明)
> `.NET 默认 CBC 模å¼ï¼›Java 默认 ECB 模å¼`——跨è¯è¨€å¯¹æŽ¥æ—¶éœ€ä¸¤ç«¯å商对é½ã€‚
> `PaddingMode.PKCS7` ç‰åŒäºŽ Java çš„ `PKCS5Padding`。
---
## 4. RC4 API(文档完整æ¢å¤ï¼‰
```csharp
Byte[] RC4(this Byte[] data, Byte[] pass)
// åŠ å¯†å’Œè§£å¯†ä½¿ç”¨ç›¸åŒå‡½æ•°ï¼ˆå¯¹ç§°æµåŠ å¯†ï¼‰
```
> RC4 å˜åœ¨å·²çŸ¥å¯†ç åˆ†æžæ¼æ´žï¼Œä¸åº”用于新系统安全需求。
---
## 5. RSA API(`NewLife.Security` 命å空间)
```csharp
using NewLife.Security;
// ç”Ÿæˆ RSA 密钥对
(String publicKey, String privateKey) = RSAHelper.GenerateKey(2048);
// ä½¿ç”¨å…¬é’¥åŠ å¯†
Byte[] RSAHelper.Encrypt(Byte[] data, String publicKey)
// 使用ç§é’¥è§£å¯†
Byte[] RSAHelper.Decrypt(Byte[] data, String privateKey)
// ç§é’¥ç¾å
Byte[] RSAHelper.Sign(Byte[] data, String privateKey, String algorithm = "SHA256")
// 公钥验ç¾
Boolean RSAHelper.Verify(Byte[] data, Byte[] signature, String publicKey, String algorithm = "SHA256")
```
---
## 6. 安全强度对比
| 算法 | 类别 | 当å‰å®‰å…¨è¯„级 | 推è用途 |
|------|------|------------|---------|
| MD5 | 哈希 | âš ï¸ å¼±ï¼ˆå¯†ç 场景)| æ–‡ä»¶æ ¡éªŒï¼ˆéžå¯†ç )|
| SHA1 | 哈希 | âš ï¸ å¼±ï¼ˆå¯†ç 场景)| é—ç•™æ ¡éªŒ |
| SHA256 | 哈希 | ✅ 安全 | 完整性/HMAC/APIç¾å |
| SHA512 | 哈希 | ✅ 安全 | 高安全需求 |
| CRC32 | æ ¡éªŒ | âš ï¸ éžåР坆 | å议完整性 |
| Murmur128 | 哈希 | âš ï¸ éžåР坆 | 哈希表/布隆过滤器 |
| DES | 对称 | ⌠ä¸å®‰å…¨ | ç¦æ¢æ–°åœºæ™¯ |
| 3DES | 对称 | âš ï¸ å¼± | 仅旧系统兼容 |
| AES-CBC | 对称 | ✅ 安全 | æŽ¨èæ ‡å‡† |
| AES-ECB | 对称 | âš ï¸ æ¨¡å¼å¼± | ä»…è·¨è¯è¨€å…¼å®¹ |
| RC4 | å¯¹ç§°æµ | ⌠ä¸å®‰å…¨ | ç¦æ¢æ–°åœºæ™¯ |
| RSA 2048 | éžå¯¹ç§° | ✅ 安全 | 密钥å商/ç¾å |
---
## 7. 通用规则 vs NewLife.Core 特例
| 规则 | 通用性 | 说明 |
|------|--------|------|
| MD5/CRC å®Œæ•´æ€§æ ¡éªŒ | ✅ 通用 | æ™®é规律 |
| HMAC-SHA256 API ç¾å | ✅ 通用 | è¡Œä¸šæ ‡å‡† |
| AES-CBC 推è | ✅ 通用 | æ™®é安全建议 |
| `pass` 自动填充密钥长度 | âš ï¸ NewLife 特有 | 通用实现需手动 Pad |
| æ‰©å±•æ–¹æ³•å½¢å¼ (`data.MD5()`) | âš ï¸ NewLife 特有 | 通用替代:`MD5.HashData(data)` |
| `RSAHelper` å°è£… | âš ï¸ NewLife 特有 | å°è£… `RSACryptoServiceProvider` |
|