Codeunit 1382 DESCryptoServiceProvider Impl. in 26
- App
- System Application
- Namespace
- System.Security.Encryption
Versions171819202122232425262728latest
Source in 26
src/System Application/App/Cryptography Management/src/DESCryptoServiceProviderImpl.Codeunit.al102 lines, Copyright (c) Microsoft Corporation. MIT
// ------------------------------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
// ------------------------------------------------------------------------------------------------
namespace System.Security.Encryption;
using System;
codeunit 1382 "DESCryptoServiceProvider Impl."
{
Access = Internal;
InherentEntitlements = X;
InherentPermissions = X;
procedure EncryptText(VarInput: Text; Password: SecretText; Salt: Text) VarOutput: Text
var
ByteArray: DotNet Array;
SymmetricAlgorithm: DotNet "Cryptography.SymmetricAlgorithm";
Encoding: DotNet Encoding;
begin
if VarInput = '' then
exit;
ConstructDESCryptoServiceProvider(SymmetricAlgorithm, Password, Salt);
ByteArray := Encoding.GetEncoding(0).GetBytes(VarInput);
TransformToArray(SymmetricAlgorithm.CreateEncryptor(), ByteArray);
VarOutput := Encoding.GetEncoding(0).GetString(ByteArray, 0, ByteArray.Length);
end;
procedure DecryptText(VarInput: Text; Password: SecretText; Salt: Text) VarOutput: Text
var
ByteArray: DotNet Array;
Encoding: DotNet Encoding;
SymmetricAlgorithm: DotNet "Cryptography.SymmetricAlgorithm";
begin
if VarInput = '' then
exit;
ConstructDESCryptoServiceProvider(SymmetricAlgorithm, Password, Salt);
ByteArray := Encoding.GetEncoding(0).GetBytes(VarInput);
TransformToArray(SymmetricAlgorithm.CreateDecryptor(), ByteArray);
VarOutput := Encoding.GetEncoding(0).GetString(ByteArray, 0, ByteArray.Length);
end;
procedure EncryptStream(Password: SecretText; Salt: Text; InputInstream: InStream; var OutputOutstream: OutStream)
var
MemoryStream: DotNet MemoryStream;
ByteArray: DotNet Array;
SymmetricAlgorithm: DotNet "Cryptography.SymmetricAlgorithm";
begin
InStreamToArray(InputInstream, ByteArray);
ConstructDESCryptoServiceProvider(SymmetricAlgorithm, Password, Salt);
TransformToArray(SymmetricAlgorithm.CreateEncryptor(), ByteArray);
MemoryStream := MemoryStream.MemoryStream(ByteArray);
CopyStream(OutputOutstream, MemoryStream);
end;
procedure DecryptStream(Password: SecretText; Salt: Text; InputInstream: InStream; var OutputOutstream: OutStream)
var
MemoryStream: DotNet MemoryStream;
ByteArray: DotNet Array;
SymmetricAlgorithm: DotNet "Cryptography.SymmetricAlgorithm";
begin
InStreamToArray(InputInstream, ByteArray);
ConstructDESCryptoServiceProvider(SymmetricAlgorithm, Password, Salt);
TransformToArray(SymmetricAlgorithm.CreateDecryptor(), ByteArray);
MemoryStream := MemoryStream.MemoryStream(ByteArray);
CopyStream(OutputOutstream, MemoryStream);
end;
local procedure InStreamToArray(InputInstream: InStream; var ByteArray: DotNet Array)
var
MemoryStream: DotNet MemoryStream;
begin
MemoryStream := MemoryStream.MemoryStream();
CopyStream(MemoryStream, InputInstream);
ByteArray := MemoryStream.ToArray();
end;
[NonDebuggable]
local procedure ConstructDESCryptoServiceProvider(var SymmetricAlgorithm: DotNet "Cryptography.SymmetricAlgorithm"; Password: SecretText; Salt: Text)
var
Encoding: DotNet Encoding;
DESCryptoServiceProvider: DotNet "Cryptography.DESCryptoServiceProvider";
Rfc2898DeriveBytes: DotNet Rfc2898DeriveBytes;
begin
Rfc2898DeriveBytes := Rfc2898DeriveBytes.Rfc2898DeriveBytes(Password.Unwrap(), Encoding.ASCII.GetBytes(Salt));
SymmetricAlgorithm := DESCryptoServiceProvider.DESCryptoServiceProvider();
SymmetricAlgorithm.Key := Rfc2898DeriveBytes.GetBytes(8);
SymmetricAlgorithm.IV := Rfc2898DeriveBytes.GetBytes(8);
end;
local procedure TransformToArray(CryptoTransform: DotNet "Cryptography.ICryptoTransform"; var ByteArray: DotNet Array)
begin
ByteArray := CryptoTransform.TransformFinalBlock(ByteArray, 0, ByteArray.Length);
end;
}Procedures, 4
| Name | Parameters | Returns | Access | Obsolete |
|---|---|---|---|---|
| EncryptText | (Text, SecretText, Text) | Text | public | - |
| DecryptText | (Text, SecretText, Text) | Text | public | - |
| EncryptStream | (SecretText, Text, InStream, var OutStream) | public | - | |
| DecryptStream | (SecretText, Text, InStream, var OutStream) | public | - |