SimonSpeckNet 0.3.0
dotnet add package SimonSpeckNet --version 0.3.0
NuGet\Install-Package SimonSpeckNet -Version 0.3.0
<PackageReference Include="SimonSpeckNet" Version="0.3.0" />
paket add SimonSpeckNet --version 0.3.0
#r "nuget: SimonSpeckNet, 0.3.0"
// Install SimonSpeckNet as a Cake Addin #addin nuget:?package=SimonSpeckNet&version=0.3.0 // Install SimonSpeckNet as a Cake Tool #tool nuget:?package=SimonSpeckNet&version=0.3.0
simon-speck-net
c# wrapper implement of Naruto/simon-speck-c
simon and speck are lightweight block cipher algorithms, published by NSA.(iadgov/simon-speck)
support platforms are Desktop Platforms(Windows, macOS, Linux), Xamarin iOS and MonoAndroid.
Supports
- algorithms and block sizes, key sizes and modes
- speck ECB
- 128/128
- 128/192
- 128/256
- speck CTR
- 128/128
- 128/192
- 128/256
- speck ECB
- platforms, architectures
- windows x64
- macOS x64
- linux x64
- Xamarin iOS
- MonoAndroid
Sample
simple encrypt and decrypt code.
String plainText = "test text abcdefg.";
byte[] plainByte = System.Text.Encoding.ASCII.GetBytes(plainText);
// Speck ECB mode
using (SymmetricAlgorithm algo = new Speck())
{
algo.BlockSize = 128;
algo.KeySize = 128;
algo.GenerateKey();
using (ICryptoTransform encryptor = algo.CreateEncryptor() , decryptor = algo.CreateDecryptor())
{
byte[] plainEnc = encryptor.TransformFinalBlock(plainByte, 0, plainByte.Length);
byte[] plainDec = decryptor.TransformFinalBlock(plainEnc, 0, plainEnc.Length);
Console.WriteLine(System.Text.Encoding.ASCII.GetString(plainDec));
Console.WriteLine();
}
}
// Speck CTR mode
using (SymmetricAlgorithm algo = new SpeckCTR())
{
algo.BlockSize = 128;
algo.KeySize = 128;
algo.GenerateIV();
algo.GenerateKey();
using (ICryptoTransform encryptor = algo.CreateEncryptor() , decryptor = algo.CreateDecryptor())
{
byte[] plainEnc = encryptor.TransformFinalBlock(plainByte, 0, plainByte.Length);
byte[] plainDec = decryptor.TransformFinalBlock(plainEnc, 0, plainEnc.Length);
Console.WriteLine(System.Text.Encoding.ASCII.GetString(plainDec));
Console.WriteLine();
}
}
development
preapre
- mono
- Unity (if create unity package)
get source
git clone --recursive git@github.com:Naruto/simon-speck-net.git
build
build simon-speck-net and nunit test.
cd /path/to/simon-speck-net
cd ./net
mono .nuget/nuget.exe restore
xbuild /p:TargetFrameworkVersion="v4.5" /p:Configuration=Release
mono ./packages/NUnit.ConsoleRunner.3.7.0/tools/nunit3-console.exe ./speckTest/bin/Release/speckTest.dll
or
cd /path/to/simon-speck-net
./scripts/build.sh
create nuget package
cd /path/to/simon-speck-net
./scripts/create_nuget.sh
SimonSpeckNet nuget package file is outputted to out/net
directory.
create unity package
cd /path/to/simon-speck-net
./scripts/create_unitypackage.sh
SimonSpeckNet unitypackage file is outputted to out/unity
directory.
update native library
update simon-speck-c sumobule
git submodule update --init --recursive
Android
export NDK_ROOT=/path/to/android-ndk-path
./scripts/plugins/deploy_android.sh
deploy each archtectures library files to net/plugins/Android/libs
iOS
./scripts/pluginsdeploy_ios.sh
deploy fat library file to net/plugins/iOS
Linux
./scripts/plugins/deploy_linux.sh
deploy .so file to net/plugins/x64
macOS
./scripts/plugins/deploy_mac.sh
deploy .dylib and .bundle files to net/plugins/x64
Windows
T.B.D
License
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp1.0 was computed. netcoreapp1.1 was computed. netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard is compatible. netstandard1.0 was computed. netstandard1.1 was computed. netstandard1.2 was computed. netstandard1.3 was computed. netstandard1.4 was computed. netstandard1.5 was computed. netstandard1.6 was computed. netstandard2.0 was computed. netstandard2.1 was computed. |
.NET Framework | net is compatible. net45 was computed. net451 was computed. net452 was computed. net46 was computed. net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid is compatible. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen30 was computed. tizen40 was computed. tizen60 was computed. |
Universal Windows Platform | uap was computed. uap10.0 was computed. |
Windows Phone | wp8 was computed. wp81 was computed. wpa81 was computed. |
Windows Store | netcore is compatible. netcore45 was computed. netcore451 was computed. win is compatible. |
Xamarin.iOS | xamarinios is compatible. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
This package has no dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
- version up simon-speck-c to v0.6
- change SpeckCTR default padding mode to `Padding.None`
- SpeckCTR allows any length data when setting `Padding.None`. And return values length is same as input data length.