NickBrighten/NBSCrypto
GitHub: NickBrighten/NBSCrypto
一个用 Objective-C 和 C 编写的 Apple 全平台轻量级密码学框架,支持数十种对称加密、哈希和 MAC 算法。
Stars: 1 | Forks: 0
# NBSCrypto
NBSCrypto 是一个专为 iOS、iPadOS、macOS、tvOS 和 watchOS 设计的超轻量级加密框架。
本仓库包含整个 Xcode 项目及其所有 target,可直接构建。\
NSCrypto 使用 `Objective-C` 和 `C` 编写。
可以在 Objective-C 和 Swift 中使用 `.framework` 或 `.xcframework`。\
要将 `.framework` 或 `.xcframework` 集成到 Objective-C 项目中,您可以参考我们的指南:[将 NBSCrypto 集成到 Objective-C 项目](https://localhost);要将其集成到 Swift 项目中,您可以参考我们的指南:[将 NBSCrypto 集成到 Swift 项目](https://localhost)。
预编译版本将提供多 target 的 `.xcframework`,适用于生产环境/部署和模拟器,可[在此获取](https://github.com/NickBrighten/NBSCrypto/releases)。
XCFramework `.xcframework` 是 Apple 推荐的、用于分发编译二进制代码和框架的现代格式。它允许开发者将支持多种平台(如 iOS、iPadOS、macOS、tvOS、visionOS 和 watchOS)的库打包成一个统一的组件,并在真机和模拟器上通用。
如果您希望将此源代码用于您自己的库(以及用于非 Apple 设备平台),您可以从 `src` 文件夹开始,对代码进行扩展和优化。
#
# 目录
- [协作](#collaboration)
- [支持的加密算法](#supported-cipher-algorithms)
- [支持的哈希算法](#supported-hash-algorithms)
- [支持的 MAC 算法](#supported-mac-algorithms)
#
## 分支
如果您希望依赖于这样一个不稳定的分支,请创建此仓库的您自己的 fork,以确保您的使用不会受到影响。
#
# 支持的加密算法
- __AES / RIJNDAEL__
- BIT-LENGTH: `128` `192` `256`
- MODES: `CBC` `CCM` `CFB` `CTR` `EAX` `ECB` `F8` `GCM` `LRW` `OCB` `OCB3` `OFB` `XTS`
- __ANUBIS / ANUBIS-TWEAK__
- BIT-LENGTH: `128` `160` `192` `224` `256` `288` `320`
- MODES: `CBC` `CCM` `CFB` `CTR` `EAX` `ECB` `F8` `GCM` `LRW` `OCB` `OCB3` `OFB` `XTS`
- __ARIA__
- BIT-LENGTH: `128` `192` `256`
- MODES: `CBC` `CCM` `CFB` `CTR` `EAX` `ECB` `F8` `GCM` `LRW` `OCB` `OCB3` `OFB` `XTS`
- __BLOWFISH__
- BIT-LENGTH: `128` up to `576`
- MODES: `CBC` `CFB` `CTR` `EAX` `ECB` `F8` `OCB` `OFB`
- __CAMELLIA__
- BIT-LENGTH: `128` `192` `256`
- MODES: `CBC` `CCM` `CFB` `CTR` `EAX` `ECB` `F8` `GCM` `LRW` `OCB` `OCB3` `OFB` `XTS`
- __CAST-5__
- BIT-LENGTH: `128`
- MODES: `CBC` `CFB` `CTR` `EAX` `ECB` `F8` `OCB` `OFB`
- __CAST-6__
- BIT-LENGTH: `128` `160` `192` `224` `256`
- MODES: `CBC` `CCM` `CFB` `CTR` `EAX` `ECB` `F8` `GCM` `LRW` `OCB` `OCB3` `OFB` `XTS`
- __CHACHA8__
- BIT-LENGTH: `128` `256`
- MODES: `CHACHA8POLY1305`
- __CHACHA12__
- BIT-LENGTH: `128` `256`
- MODES: `CHACHA12POLY1305`
- __CHACHA20__
- BIT-LENGTH: `128` `256`
- MODES: `CHACHA20POLY1305`
- __DES__
- BIT-LENGTH: `64`
- MODES: `CBC` `CFB` `CTR` `EAX` `ECB` `F8` `OCB` `OFB`
- __DES-EDE / DES-EDE2__
- BIT-LENGTH: `128`
- MODES: `CBC` `CFB` `CTR` `EAX` `ECB` `F8` `OCB` `OFB`
- __DES3 / DES-EDE3__
- BIT-LENGTH: `192`
- MODES: `CBC` `CFB` `CTR` `EAX` `ECB` `F8` `OCB` `OFB`
- __IDEA__
- BIT-LENGTH: `128`
- MODES: `CBC` `CFB` `CTR` `EAX` `ECB` `F8` `OCB` `OFB`
- __KASUMI / A5-3__
- BIT-LENGTH: `128`
- MODES: `CBC` `CFB` `CTR` `EAX` `ECB` `F8` `OCB` `OFB`
- __KHAZAD__
- BIT-LENGTH: `128`
- MODES: `CBC` `CFB` `CTR` `EAX` `ECB` `F8` `OCB` `OFB`
- __LEA__
- BIT-LENGTH: `128` `192` `256`
- MODES: `CBC` `CCM` `CFB` `CTR` `EAX` `ECB` `F8` `GCM` `LRW` `OCB` `OCB3` `OFB` `XTS`
- __MARS__
- BIT-LENGTH: `128` `160` `192` `224` `256` `288` `320` `352` `384` `416` `448`
- MODES: `CBC` `CCM` `CFB` `CTR` `EAX` `ECB` `F8` `GCM` `LRW` `OCB` `OCB3` `OFB` `XTS`
- __NOEKEON__
- BIT-LENGTH: `128`
- MODES: `CBC` `CCM` `CFB` `CTR` `EAX` `ECB` `F8` `GCM` `LRW` `OCB` `OCB3` `OFB` `XTS`
- __PRESENT__
- BIT-LENGTH: `80` `128`
- MODES: `CBC` `CFB` `CTR` `EAX` `ECB` `F8` `OCB` `OFB`
- __RC2__
- BIT-LENGTH: `1024`
- MODES: `CBC` `CFB` `CTR` `EAX` `ECB` `F8` `OCB` `OFB`
- __RC4__
- BIT-LENGTH: `2048`
- MODES: `none`
- __RC6__
- BIT-LENGTH: `256`
- MODES: `CBC` `CCM` `CFB` `CTR` `EAX` `ECB` `F8` `GCM` `LRW` `OCB` `OCB3` `OFB` `XTS`
- __SAFER-K64 / SAFER-SK64__
- BIT-LENGTH: `64`
- MODES: `CBC` `CFB` `CTR` `EAX` `ECB` `F8` `OCB` `OFB`
- __SAFER-K128 / SAFER-SK128__
- BIT-LENGTH: `128`
- MODES: `CBC` `CFB` `CTR` `EAX` `ECB` `F8` `OCB` `OFB`
- __SAFER+__
- BIT-LENGTH: `128` `192` `256`
- MODES: `CBC` `CCM` `CFB` `CTR` `EAX` `ECB` `F8` `GCM` `LRW` `OCB` `OCB3` `OFB` `XTS`
- __SEED__
- BIT-LENGTH: `128`
- MODES: `CBC` `CCM` `CFB` `CTR` `EAX` `ECB` `F8` `GCM` `LRW` `OCB` `OCB3` `OFB` `XTS`
- __SERPENT__
- BIT-LENGTH: `128` `192` `256`
- MODES: `CBC` `CCM` `CFB` `CTR` `EAX` `ECB` `F8` `GCM` `LRW` `OCB` `OCB3` `OFB` `XTS`
- __SKIPJACK__
- BIT-LENGTH: `128`
- MODES: `CBC` `CFB` `CTR` `EAX` `ECB` `F8` `OCB` `OFB`
- __SM4__
- BIT-LENGTH: `128`
- MODES: `CBC` `CCM` `CFB` `CTR` `EAX` `ECB` `F8` `GCM` `LRW` `OCB` `OCB3` `OFB` `XTS`
- __TEA__
- BIT-LENGTH: `128`
- MODES: `CBC` `CFB` `CTR` `EAX` `ECB` `F8` `OCB` `OFB`
- __TWOFISH__
- BIT-LENGTH: `128` `192` `256`
- MODES: `CBC` `CCM` `CFB` `CTR` `EAX` `ECB` `F8` `GCM` `LRW` `OCB` `OCB3` `OFB` `XTS`
- __XTEA__
- BIT-LENGTH: `128`
- MODES: `CBC` `CFB` `CTR` `EAX` `ECB` `F8` `OCB` `OFB`
#
# 支持的哈希算法
- __ADLER32__
- BIT-LENGTH: `32`
- __ARIRANG__
- BIT-LENGTH: `224` `256` `384` `512`
- __BLAKE2B__
- BIT-LENGTH: `160` `256` `384` `512`
- __BLAKE2S__
- BIT-LENGTH: `128` `160` `224` `256`
- __BLAKE3__
- BIT-LENGTH: `256`
- __BLUEMIDNIGHTWISH__
- BIT-LENGTH: `224` `256` `384` `512`
- __CHI__
- BIT-LENGTH: `224` `256` `384` `512`
- __CRC-8__
- BIT-LENGTH: `8`
- VARIATIONS: `AES` `AUTOSAR` `BLUETOOTH` `CCITT` `CDMA2000` `DARC` `DVB-S2` `EBU` `GSM-A` `GSM-B` `HITAG` `I-432-1` `ICODE` `ITU` `LTE` `MAXIM` `MAXIM-DOWN` `MIFARE-MAD` `NRSC-5` `OPENSEAFTY` `ROHC` `SAE-J1850` `SMBUS` `TECH-3250` `WCDMA`
- __CRC-16__
- BIT-LENGTH: `16`
- VARIATIONS: `ACORN` `ARC` `AUG-CCITT` `AUTOSAR` `BLUETOOTH` `BUYPASS` `CCITT` `CCITT-FALSE` `CCITT-TRUE` `CDMA2000` `CMS` `DARC` `DDS110` `DECT-R` `DECT-X` `DNP` `EN-13757` `EPC` `EPC-C1G2` `GENIBUS` `GSM` `IBM` `IBM-3740` `IBM-SDLC` `ICODE` `IEC-61158-2` `ISO-HDLC` `ISO-IEC-14443-3-A` `ISO-IEC-14443-3-B` `KERMIT` `LHA` `LJ1200` `LTE` `M17` `MAXIM` `MAXIM-DOWN` `MCRF4XX` `MODBUS` `NRSC-5` `OPENSEAFTY-A` `OPENSEAFTY-B` `PROFIBUS` `RIELLO`SPI-FUJITSU` `T10-DIF` `TELEDISK` `TMS37157` `UMTS` `USB` `V41LSB` `V41MSB` `VERIFONE` `X-25` `XMODEM` `ZMODEM`
- __CRC-24__
- BIT-LENGTH: `24`
- VARIATIONS: `BLE` `FLEXRAY-A` `FLEXRAY-B` `INTERLAKEN` `LTE-A` `LTE-B` `OPENPGP` `OS-9` `RADIX-64` `RTCM-104V3` `WDCMA`
- __CRC-32__
- BIT-LENGTH: `32`
- VARIATIONS: `AAL5` `ADCCP` `AIXM` `AUTOSAR` `B` `BASE91-C` `BASE91-D` `BZIP2` `C` `CASTAGNOLI` `CD-ROM-EDC` `CKSUM` `D` `DECT-B` `IEEE-802-3` `INTERLAKEN` `ISCSI` `ISO-HDLC` `JAMCRC` `MEF` `MPEG2` `NVME` `POSIX` `Q` `V42` `XFER` `XZ`
- __CRC-64__
- BIT-LENGTH: `64`
- VARIATIONS: `ECMA-182` `GO-ECMA` `GO-ISO` `ISO-3309` `MS` `NVME` `REDIS` `WE` `XZ`
- __ECHO__
- BIT-LENGTH: `224` `256` `384` `512`
- __FNV1-32 / FNV1a-32__
- BIT-LENGTH: `32`
- __FNV1-64 / FNV1a-64__
- BIT-LENGTH: `64`
- __GOST / GOST-CRYPTO__
- BIT-LENGTH: `256`
- __GROESTL__
- BIT-LENGTH: `224` `256` `384` `512`
- __HAMSI__
- BIT-LENGTH: `224` `256` `384` `512`
- __HAVAL-3 / HAVAL-4 / HAVAL-5__
- BIT-LENGTH: `128` `160` `192` `224` `256`
- __JH__
- BIT-LENGTH: `224` `256` `384` `512`
- __JOAAT__
- BIT-LENGTH: `32`
- __KECCAK__
- BIT-LENGTH: `224` `256` `384` `512`
- __KUPYNA__
- BIT-LENGTH: `256` `512`
- __LANE__
- BIT-LENGTH: `224` `256` `384` `512`
- __LESAMNTA__
- BIT-LENGTH: `224` `256` `384` `512`
- __LUFFA__
- BIT-LENGTH: `224` `256` `384` `512`
- __MD2 / MD4 / MD5__
- BIT-LENGTH: `128`
- __MURMUR3A__
- BIT-LENGTH: `32`
- __MURMUR3C / MURMUR3F__
- BIT-LENGTH: `128`
- __RIPEMD__
- BIT-LENGTH: `128` `160` `256` `320`
- __SHA-1__
- BIT-LENGTH: `160`
- __SHA-2__
- BIT-LENGTH: `224` `256` `384` `512`
- __SHA-3__
- BIT-LENGTH: `224` `256` `384` `512`
- __SHABAL__
- BIT-LENGTH: `192` `224` `256` `384` `512`
- __SHAKE__
- BIT-LENGTH: `128` `256`
- __SHAVITE3__
- BIT-LENGTH: `224` `256` `384` `512`
- __SIMD__
- BIT-LENGTH: `224` `256` `384` `512`
- __SM3__
- BIT-LENGTH: `256`
- __SNEFRU__
- BIT-LENGTH: `256`
- __STREEBOG / GOST-R34112012__
- BIT-LENGTH: `256` `512`
- __SWIFFTX__
- BIT-LENGTH: `224` `256` `384` `512`
- __TIGER / TIGER-2__
- BIT-LENGTH: `128` `160` `192`
- __WHIRPOOL__
- BIT-LENGTH: `512`
- __XXH__
- BIT-LENGTH: `32` `64` `128`
#
# 支持的 MAC 算法
- __F9__
- `cipher`
- __HMAC__
- `generic` `hash`
- __OMAC__
- `cipher`
- __PELICAN__
- `generic` `hash`
- __PMAC__
- `cipher`
- __POLY1305__
- `generic` `hash`
#
标签:Apple生态, CVE监控, Objective-C, 加密框架, 客户端加密, 密码学, 手动系统调用