Walter.Cypher 2025.7.10.1343

Prefix Reserved
dotnet add package Walter.Cypher --version 2025.7.10.1343
                    
NuGet\Install-Package Walter.Cypher -Version 2025.7.10.1343
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Walter.Cypher" Version="2025.7.10.1343" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Walter.Cypher" Version="2025.7.10.1343" />
                    
Directory.Packages.props
<PackageReference Include="Walter.Cypher" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Walter.Cypher --version 2025.7.10.1343
                    
#r "nuget: Walter.Cypher, 2025.7.10.1343"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Walter.Cypher@2025.7.10.1343
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Walter.Cypher&version=2025.7.10.1343
                    
Install as a Cake Addin
#tool nuget:?package=Walter.Cypher&version=2025.7.10.1343
                    
Install as a Cake Tool

WALTER

Introducing the WALTER Framework: Workable Algorithms for Location-aware Transmission, Encryption Response. Designed for modern developers, WALTER is a groundbreaking suite of NuGet packages crafted for excellence in .NET Standard 2.0, 2.1, Core 3.1, and .NET 6, 7, 8, as well as C++ environments. By integrating Delphi's native development strengths, we�ve enhanced WALTER�s encryption capabilities to be not only robust but also future-proof, ensuring that it excels in performance, stability, and cross-platform support.

Whether you're tackling networking, encryption, or secure communication, WALTER offers unparalleled efficiency and precision in processing, making it an essential tool for developers who prioritize speed, security, and memory management in their applications.

About this Walter.Cypher Nuget Package

The Walter.Cypher package is a testament to our commitment to providing developers with state-of-the-art cryptographic capabilities. By leveraging Delphi�s potent native development environment, we�ve engineered the package to offer hashing, symmetric, and asymmetric encryption methods that are secure, efficient, and cross-platform. This ensures that data encrypted with Walter.Cypher remains secure against both current and emergent cyber threats, including those posed by quantum computing advancements.

For detailed insights into how Delphi underpins our cryptographic solutions, offering a blend of speed, efficiency, and future-readiness, refer to the DelphiInside.md document. This document elaborates on our strategic choice of Delphi for native calls and AoT compilation, ensuring that the Walter.Cypher package delivers exceptional performance and security across all platforms.

Online documentation and sample code are available to help you integrate Walter.Cypher into your projects seamlessly.

Walter.Cypher

This repository showcases how to utilize the Walter.Cypher NuGet package effectively in your projects with minimal code snippets.

Walter.Web.CypherTests sample code

This sample code shows the use of

  1. Fixed cypher using a password to protect your code.
  2. Generating checksum for tamper detection.
  3. PGP using various key strengths to protect data
  4. The use of Numeric encryption that can be used to defeat base64 scanning tools to detect cyphered constants for password probing as values can be stored in int64 type values

Get Started

Show how to cipher large amounts of text using the Crypto class


[TestMethod()]
public void CipherZip()
{
    var sb = new StringBuilder();
    for (var i = 0; i < 1024; i++)
    {
        sb.Append(DateTime.Now.ToString());
    }
    var test = sb.ToString();

    var cypkered = Crypto.Zip(test);
    var expect = Crypto.UnZip(cypkered);
    Assert.AreEqual(test, expect);
}

Alternatively you can use the extension method

[TestMethod()]
public void CypherExtesnionTest()
{
    var testpw = "65654616540546546";
    var cypher = Environment.MachineName.Encrypt(testpw);
    var clear = cypher.Decrypt(testpw);

    Assert.AreEqual(Environment.MachineName, clear);
}

The extension method for cypher also allow encryption using public/private key encryption using certificates for text of any length

[TestMethod]
public void TestSmallStringAsBytes()
{
    using X509Certificate2 encryptCertificate = GetCert(".cer");
    using X509Certificate2 decryptCertificate = GetCert(".pfx", "01234456");

    var certCypher = Environment.MachineName.AsEncryptedBytes(encryptCertificate);
    var clearBytes = certCypher.AsDecryptFromBytes(decryptCertificate);

    Assert.AreEqual(Environment.MachineName, UTF8Encoding.UTF8.GetString(clearBytes));

    // helper method load embedded test certificate resource from assembly
    static X509Certificate2 GetCert(string extension, string password = null)
    {
        var asam = Assembly.GetExecutingAssembly();
        using (var memory = new MemoryStream())
        using (var stream = asam.GetManifestResourceStream(asam.GetManifestResourceNames().First(f => f.EndsWith(extension))))
        {
            stream.CopyTo(memory);
            return new X509Certificate2(memory.ToArray(), password);
        }
    }
}

[TestMethod]
public void TestLargeStringAsBytes()
{
    using X509Certificate2 encryptCertificate = GetCert(".cer");
    using X509Certificate2 cecryptCertificate = GetCert(".pfx","01234456");

    var sb = new StringBuilder();
    for (int i = 0; i < 100; i++)
    {
        sb.Append(Guid.NewGuid());
    }
    var text = sb.ToString();

    var certCypher = text.AsEncryptedBytes(encryptCertificate);
    Assert.AreNotEqual(certCypher.Length, text.Length);

    var clearBytes = certCypher.AsDecryptFromBytes(cecryptCertificate);
    Assert.AreEqual(text, UTF8Encoding.UTF8.GetString(clearBytes));

    X509Certificate2 GetCert(string extension, string password = null)
    {
        var asam = Assembly.GetExecutingAssembly();
        using (var memory = new MemoryStream())
        using (var stream = asam.GetManifestResourceStream(asam.GetManifestResourceNames().First(f => f.EndsWith(extension))))
        {
            stream!.CopyTo(memory);
            return new X509Certificate2(memory.ToArray(), password);
        }
    }
}


You also have the possibility to encrypt and decrypt persisted text based on the hosting machine, user executing the application, the application or process name this feature works on all platforms that support where that support the concept of users, processes and machine names in .NET and is ideal for storing secure data in memory that should not be possible to access when creating an application dump file but should survive a reboot.

There are some limitations on some IOT devices that might prevent you from using these features

public void RoundTrip_EncryptionScope_Process()
{
    var sb = new StringBuilder();
    for (int i = 0; i < 100; i++)
    {
        sb.Append(Guid.NewGuid());
    }
    var text = sb.ToString();

    var certCypher = text.AsEncryptedBytes(scope: EncryptionScope.Process);
    Assert.AreNotEqual(certCypher.Length, text.Length);

    var clearText = certCypher.AsDecryptFromBytes(scope: EncryptionScope.Process);
    Assert.AreEqual(text, clearText);

}

[TestMethod()]
public void RoundTrip_EncryptionScope_User()
{
    var sb = new StringBuilder();
    for (int i = 0; i < 100; i++)
    {
        sb.Append(Guid.NewGuid());
    }
    var text = sb.ToString();

    var certCypher = text.AsEncryptedBytes(scope: EncryptionScope.User);
    Assert.AreNotEqual(certCypher.Length, text.Length);

    var clearText = certCypher.AsDecryptFromBytes(scope: EncryptionScope.User);
    Assert.AreEqual(text, clearText);
}

[TestMethod()]
public void RoundTrip_EncryptionScope_Machine()
{
    var sb = new StringBuilder();
    for (int i = 0; i < 100; i++)
    {
        sb.Append(Guid.NewGuid());
    }
    var text = sb.ToString();

    var certCypher = text.AsEncryptedBytes(scope: EncryptionScope.Machine);
    Assert.AreNotEqual(certCypher.Length, text.Length);

    var clearText = certCypher.AsDecryptFromBytes(scope: EncryptionScope.Machine);
    Assert.AreEqual(text, clearText);
}

Product 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 is compatible.  net8.0-android was computed.  net8.0-android34.0 is compatible.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-ios18.0 is compatible.  net8.0-maccatalyst was computed.  net8.0-maccatalyst18.0 is compatible.  net8.0-macos was computed.  net8.0-macos15.0 is compatible.  net8.0-tvos was computed.  net8.0-windows was computed.  net8.0-windows7.0 is compatible.  net9.0 is compatible.  net9.0-android was computed.  net9.0-android35.0 is compatible.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-ios18.0 is compatible.  net9.0-maccatalyst was computed.  net9.0-maccatalyst18.0 is compatible.  net9.0-macos was computed.  net9.0-macos15.0 is compatible.  net9.0-tvos was computed.  net9.0-windows was computed.  net9.0-windows7.0 is compatible.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 is compatible. 
.NET Framework 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 was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on Walter.Cypher:

Package Downloads
Walter.BOM

Internal NuGet package with business objects used by several ASP-WAF products Documentation available at https://firewallapi.asp-waf.com/?topic=html/N-Walter.BOM.htm

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
2025.7.10.1343 318 7/10/2025
2025.6.30.2102 380 7/1/2025
2025.6.12.1057 289 6/12/2025
2025.4.17.1600 618 4/17/2025
2025.3.13.1306 356 3/13/2025
2025.2.26.1548 360 2/26/2025
2025.2.15.1301 1,223 2/15/2025
2025.1.16.1405 362 1/16/2025
2024.11.30.1709 1,363 12/13/2024
2024.11.30.617 140 12/13/2024
2024.11.28.1622 397 11/28/2024
2024.11.20.1316 495 11/21/2024
2024.11.14.1710 526 11/14/2024
2024.11.6.1222 434 11/6/2024
2024.10.28.1605 466 10/28/2024
2024.10.28.1335 430 10/28/2024
2024.10.19.1525 414 10/20/2024
2024.9.17.1417 1,347 9/17/2024
2024.9.12.1923 529 9/12/2024
2024.9.6.1352 532 9/7/2024
2024.9.4.1300 186 9/4/2024
2024.9.1.1143 532 9/1/2024
2024.8.19.1400 1,003 8/19/2024
2024.8.14.1256 962 8/14/2024
2024.8.12.958 555 8/12/2024
2024.8.5.1010 470 8/5/2024
2024.7.26.543 658 7/26/2024
2024.7.11.1604 509 7/11/2024
2024.7.9.1509 535 7/9/2024
2024.7.4.1424 514 7/4/2024
2024.7.3.1001 553 7/3/2024
2024.6.26.1408 929 6/28/2024
2024.6.6.1320 348 6/8/2024
2024.5.19.712 150 6/8/2024
2024.5.15.1634 349 5/15/2024
2024.5.14.829 254 5/14/2024
2024.5.13.1637 155 5/13/2024
2024.5.8.1005 292 5/8/2024
2024.4.4.2102 353 4/4/2024
2024.3.26.1111 248 3/26/2024
2024.3.19.2310 233 3/19/2024
2024.3.12.1022 249 3/12/2024
2024.3.7.836 277 3/7/2024
2024.3.6.1645 164 3/6/2024
2024.3.3.842 189 3/3/2024
2024.3.3.750 156 3/3/2024
2024.3.1.1143 168 3/1/2024
2024.2.27.1029 152 2/27/2024
2024.2.6.1959 170 2/6/2024
2023.10.12.1926 4,692 10/12/2023
2023.9.14.812 1,744 9/14/2023
2023.8.29.1040 9,407 8/29/2023
2023.8.17.903 1,870 8/17/2023
2023.8.9.1314 1,968 8/9/2023
2023.8.2.750 2,067 8/2/2023
2023.7.12.830 2,019 7/12/2023
2023.7.5.1419 2,136 7/6/2023
2023.6.14.1628 3,866 6/14/2023
2023.5.30.1640 2,561 5/30/2023
2023.5.4.1552 2,587 5/4/2023
2023.4.12.1236 6,956 4/12/2023
2023.3.14.1356 5,542 3/14/2023
2023.3.1.810 3,300 3/1/2023
2023.2.25.1185 977 2/25/2023
2023.2.22.27 5,683 2/22/2023
2023.2.15.1413 3,442 2/15/2023
2023.2.11.1628 3,439 2/11/2023
2023.1.11.534 3,733 1/11/2023
2022.12.14.648 12,864 12/14/2022
2022.11.27.1059 4,087 11/27/2022
2022.11.21.338 4,189 11/21/2022
2022.11.14.1819 4,367 11/14/2022
2022.11.14.1533 644 11/14/2022
2022.11.13.917 5,031 11/13/2022
2022.10.31.740 8,146 11/1/2022
2022.10.15.652 8,385 10/15/2022
2022.10.1.810 10,405 10/1/2022
2022.9.26.1444 11,012 9/26/2022
2022.9.14.809 9,660 9/14/2022
2022.9.8.1009 18,375 9/8/2022
2022.8.20.1007 9,836 8/20/2022
2022.8.1.1 10,096 7/31/2022
2022.7.15.841 18,982 7/15/2022
2022.7.1.1300 10,294 7/1/2022
2022.6.21.647 10,147 6/21/2022
2022.5.4.1010 36,654 5/4/2022
2022.4.10.828 29,511 4/10/2022
2022.3.26.1117 29,378 3/26/2022
2022.2.11.931 50,980 2/17/2022
2022.1.15.1312 21,097 1/17/2022
2022.1.10.537 20,199 1/10/2022
2022.1.7.1357 9,652 1/8/2022
2021.12.28.1452 11,084 12/28/2021
2021.12.15.911 10,471 12/16/2021 2021.12.15.911 is deprecated because it has critical bugs.
2021.11.19.850 38,136 11/19/2021
2021.11.11.1334 30,745 11/16/2021
2021.11.8.2109 9,099 11/9/2021
2021.11.8.1612 9,580 11/8/2021
2021.10.23.1310 52,310 10/25/2021
2021.10.13.1459 10,097 10/18/2021
2021.10.9.1116 121 10/9/2024
2021.10.9.821 536 10/10/2021
2021.9.26.1913 66,255 9/26/2021
2021.9.17.1702 15,461 9/18/2021
2021.8.30.1319 96,980 8/30/2021
2021.8.14.1600 53,689 8/16/2021
2021.8.14.829 5,748 8/14/2021
2021.8.8.1612 18,691 8/8/2021
2021.8.8.1138 502 8/8/2021
2021.7.22.1044 63,915 7/23/2021
2021.7.15.1547 10,099 7/15/2021
2021.7.12.734 9,905 7/13/2021
2021.6.26.1753 37,478 6/27/2021
2021.6.23.734 19,538 6/24/2021
2021.6.19.803 10,556 6/20/2021
2021.6.11.1600 37,627 6/13/2021
2021.6.9.1120 10,286 6/9/2021
2021.6.7.1407 2,633 6/7/2021
2021.5.28.1533 19,058 5/31/2021
2021.5.28.1451 10,253 5/31/2021
2021.5.25.1732 9,074 5/25/2021
2021.5.12.929 32,509 5/12/2021
2021.5.12.914 476 5/12/2021
2021.5.12.637 5,653 5/12/2021
2021.5.5.1901 33,408 5/6/2021
2021.5.2.1617 9,844 5/4/2021
2021.5.1.1505 10,174 5/1/2021
2021.4.28.1505 9,953 4/28/2021
2021.4.5.1653 64,094 4/5/2021
2021.4.1.913 10,037 4/1/2021
2021.3.31.1630 9,931 4/1/2021
2021.3.18.1608 10,378 3/18/2021
2021.3.3.1295 563 3/3/2021
2021.3.3.835 581 3/3/2021
2021.3.1.1205 24,903 3/2/2021
2021.3.1.1 17,251 2/27/2021
2021.2.21.1 16,731 2/21/2021
2021.2.19.3 9,042 2/20/2021
2021.2.19.2 8,808 2/19/2021
2021.2.18.2 7,827 2/19/2021
2021.2.18.1 525 2/19/2021
2021.2.16.1 17,106 2/16/2021
2021.2.10.1 38,645 2/10/2021
2021.2.9.1 7,713 2/9/2021
2021.2.8.1 555 2/9/2021
2021.2.7.1 14,541 2/6/2021
2020.12.27.1 13,969 12/27/2020
2020.12.26.3 20,316 12/27/2020
2020.12.26.2 591 12/27/2020
2020.12.24.2 605 12/26/2020
2020.12.24.1 556 12/24/2020
2020.12.18.1 7,867 12/19/2020
2020.12.15.1 14,072 12/15/2020
2020.12.14.5 13,212 12/14/2020
2020.12.14.4 7,225 12/14/2020
2020.12.14.3 6,998 12/14/2020
2020.11.27.1 68,695 11/27/2020
2020.11.25.1 13,370 11/25/2020
2020.11.23.1 582 11/25/2020
2020.11.22.2 8,919 11/23/2020
2020.11.20.1 8,165 11/21/2020
2020.11.19.3 8,230 11/19/2020
2020.11.11.1 65,451 11/11/2020
2020.10.9.5 142,418 10/9/2020
2020.10.5.1 72,060 10/5/2020
2020.10.4.1 622 10/4/2020
2020.10.1.1 19,209 10/1/2020
2020.9.24.2 24,316 9/24/2020
2020.9.12.1 51,005 9/12/2020
2020.9.8 17,795 9/8/2020
2020.9.6.5 5,454 9/6/2020
2020.9.6.4 613 9/6/2020
2020.9.6.2 1,866 9/6/2020
2020.9.3.1 14,664 9/3/2020

12 June 2025
-Update to .net 9.04 and .net 8.0.3

12 Mar 2025
-Update NuGet dependencies that have vulnerabilities

26 Feb 2025
- Update package references

14 November 2024
- Update to .net 9

2 April 2024
- Update to 8.0.3

7 March 2024
- Update to allow trimming and A0T compilation under .net 8

16 November 2023
- Update to add support for .net 8

14 September 2023
- SDK Service pack .net 6 and 7

9 August 2023
- Update to sevice packs of .net 6 and 7

2 Augusted  2023
- Update binaries