SDL Jetzt erst recht!
This commit is contained in:
155
SDL/Registrierkasse/Module1.vb
Normal file
155
SDL/Registrierkasse/Module1.vb
Normal file
@@ -0,0 +1,155 @@
|
||||
Imports Registrierkasse.RKWrapper
|
||||
Imports System.Security.Cryptography.X509Certificates
|
||||
Imports System.Text
|
||||
Imports Registrierkasse
|
||||
|
||||
Module Module1
|
||||
|
||||
Sub Main()
|
||||
|
||||
Dim rkw As New Registrierkasse.RKWrapper
|
||||
|
||||
Dim ret As Integer
|
||||
Dim zdaId As String
|
||||
Dim sigCertSerial As String
|
||||
Dim sigCert As X509Certificate
|
||||
Dim issuerCert As X509Certificate
|
||||
|
||||
ret = rkw.GetInfo(zdaId, sigCert, issuerCert)
|
||||
|
||||
If ret = 0 Then
|
||||
sigCertSerial = sigCert.GetSerialNumberString()
|
||||
Console.WriteLine("ZDA ID = " + zdaId)
|
||||
Console.WriteLine("Sig Cert Serial = " + sigCertSerial)
|
||||
|
||||
Dim sigCertBytes As Byte()
|
||||
sigCertBytes = sigCert.Export(X509ContentType.Cert)
|
||||
Console.WriteLine("Sig Cert B64: " + Convert.ToBase64String(sigCertBytes))
|
||||
|
||||
Dim issCertBytes As Byte()
|
||||
issCertBytes = issuerCert.Export(X509ContentType.Cert)
|
||||
Console.WriteLine("Issuer Cert B64: " + Convert.ToBase64String(issCertBytes))
|
||||
Else
|
||||
Console.WriteLine("GetInfo failed with return code = 0x" + ret.ToString("X4"))
|
||||
Console.WriteLine("Last error : " + rkw.LastError)
|
||||
End If
|
||||
|
||||
Dim toBeSignedStr As String
|
||||
Dim JWS_Protected_Header As String
|
||||
Dim JWS_Payload As String
|
||||
Dim tbsBytes As Byte()
|
||||
Dim signature As Byte()
|
||||
|
||||
JWS_Protected_Header = Base64url("{""alg"":""ES256""}")
|
||||
JWS_Payload = Base64url("_R1-AT1_DEMO-CASH-BOX426_776740_2015-10-14T18:20:23_53,45_6,61_0,00_47,65_3,33_NGGrKn6Kq3c=_8645153189157718879_bacPpqE/lw4=")
|
||||
toBeSignedStr = String.Format("{0}.{1}", JWS_Protected_Header, JWS_Payload)
|
||||
tbsBytes = System.Text.Encoding.UTF8.GetBytes(toBeSignedStr)
|
||||
|
||||
ret = rkw.Sign(tbsBytes, signature)
|
||||
|
||||
If ret = 0 Then
|
||||
Dim sigB64 As String
|
||||
sigB64 = Base64url(signature)
|
||||
Console.WriteLine("Signature: " + sigB64)
|
||||
Else
|
||||
Console.WriteLine("Sign failed with return code = 0x" + ret.ToString("X4"))
|
||||
Console.WriteLine("Last error : " + rkw.LastError)
|
||||
End If
|
||||
|
||||
Registrierkasse.RKWrapper.UnloadCryptoLibrary()
|
||||
|
||||
|
||||
Console.ReadLine()
|
||||
|
||||
End Sub
|
||||
|
||||
Function Base64url(ByVal input As String) As String
|
||||
Return Base64url(System.Text.Encoding.UTF8.GetBytes(input))
|
||||
End Function
|
||||
|
||||
Function Base64url(ByVal inputBytes As Byte()) As String
|
||||
Dim result As New StringBuilder(Convert.ToBase64String(inputBytes).TrimEnd("="))
|
||||
result.Replace("+", "-")
|
||||
result.Replace("/", "_")
|
||||
Return result.ToString()
|
||||
End Function
|
||||
|
||||
|
||||
End Module
|
||||
|
||||
|
||||
|
||||
Module Module2
|
||||
|
||||
Sub Test1()
|
||||
Console.WriteLine("TEST1 - A-SIT Test Daten Entschlüsseln")
|
||||
|
||||
Dim kassenID As String
|
||||
Dim belegnummer As String
|
||||
kassenID = "DEMO-CASH-BOX426"
|
||||
belegnummer = "776732"
|
||||
Console.WriteLine("Kassen ID: " + kassenID)
|
||||
Console.WriteLine("Belegnummer: " + belegnummer)
|
||||
|
||||
Dim aesB64 As String
|
||||
aesB64 = "K7L9NyWiC1xKuyBO/7DuoRFqsqgq+m3t8hjOCMNXBio="
|
||||
|
||||
Dim aesBytes As Byte()
|
||||
aesBytes = Convert.FromBase64String(aesB64)
|
||||
|
||||
Dim encB64 As String
|
||||
encB64 = "4VjrD6b2vGo="
|
||||
|
||||
Dim encBytes As Byte()
|
||||
encBytes = Convert.FromBase64String(encB64)
|
||||
|
||||
Dim umsatz As Long
|
||||
umsatz = RKAesIcm.Decrypt(encBytes, kassenID, belegnummer, aesBytes)
|
||||
|
||||
Console.WriteLine("Entschlüsselter Umsatz : " + umsatz.ToString())
|
||||
Console.WriteLine("")
|
||||
End Sub
|
||||
|
||||
Sub Test2()
|
||||
Console.WriteLine("TEST2 - Verschlüsseln/Entschlüsseln")
|
||||
|
||||
REM Generate new AES Key
|
||||
Dim aesKey As Byte()
|
||||
aesKey = RKAesIcm.GenerateKey()
|
||||
Console.WriteLine("AES key (B64): " + Convert.ToBase64String(aesKey))
|
||||
|
||||
Dim kassenID As String
|
||||
Dim belegnummer As String
|
||||
kassenID = "Register3874"
|
||||
belegnummer = "39920034"
|
||||
Console.WriteLine("Kassen ID: " + kassenID)
|
||||
Console.WriteLine("Belegnummer: " + belegnummer)
|
||||
|
||||
Dim umsatz As Long
|
||||
umsatz = 2349.0
|
||||
Console.WriteLine("Umsatz: " + umsatz.ToString())
|
||||
|
||||
|
||||
Dim encryptedBytes As Byte()
|
||||
encryptedBytes = RKAesIcm.Encrypt(umsatz, kassenID, belegnummer, aesKey)
|
||||
Console.WriteLine("Verschlüsselter Umsatz (B64): " + Convert.ToBase64String(encryptedBytes))
|
||||
|
||||
Dim umsatz2 As Long
|
||||
umsatz2 = RKAesIcm.Decrypt(encryptedBytes, kassenID, belegnummer, aesKey)
|
||||
Console.WriteLine("Entschlüsselter Umsatz : " + umsatz2.ToString())
|
||||
Console.WriteLine("")
|
||||
End Sub
|
||||
|
||||
|
||||
|
||||
Sub Main()
|
||||
REM TEST 1 - A-SIT Test Daten Entschlüsseln
|
||||
Test1()
|
||||
|
||||
REM TEST2 - Verschlüsseln/Entschlüsseln
|
||||
Test2()
|
||||
|
||||
Console.ReadLine()
|
||||
End Sub
|
||||
|
||||
End Module
|
||||
153
SDL/Registrierkasse/frmQRCode.Designer.vb
generated
Normal file
153
SDL/Registrierkasse/frmQRCode.Designer.vb
generated
Normal file
@@ -0,0 +1,153 @@
|
||||
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
|
||||
Partial Class frmQRCode
|
||||
Inherits System.Windows.Forms.Form
|
||||
|
||||
'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
|
||||
<System.Diagnostics.DebuggerNonUserCode()> _
|
||||
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
|
||||
Try
|
||||
If disposing AndAlso components IsNot Nothing Then
|
||||
components.Dispose()
|
||||
End If
|
||||
Finally
|
||||
MyBase.Dispose(disposing)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
'Wird vom Windows Form-Designer benötigt.
|
||||
Private components As System.ComponentModel.IContainer
|
||||
|
||||
'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
|
||||
'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
|
||||
'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
|
||||
<System.Diagnostics.DebuggerStepThrough()> _
|
||||
Private Sub InitializeComponent()
|
||||
Me.pic = New System.Windows.Forms.PictureBox()
|
||||
Me.btn = New System.Windows.Forms.Button()
|
||||
Me.txt = New System.Windows.Forms.TextBox()
|
||||
Me.Button1 = New System.Windows.Forms.Button()
|
||||
Me.TextBox1 = New System.Windows.Forms.TextBox()
|
||||
Me.Button2 = New System.Windows.Forms.Button()
|
||||
Me.TextBox2 = New System.Windows.Forms.TextBox()
|
||||
Me.lblCode = New System.Windows.Forms.Label()
|
||||
Me.Label1 = New System.Windows.Forms.Label()
|
||||
Me.Label2 = New System.Windows.Forms.Label()
|
||||
CType(Me.pic, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
Me.SuspendLayout()
|
||||
'
|
||||
'pic
|
||||
'
|
||||
Me.pic.Location = New System.Drawing.Point(39, 12)
|
||||
Me.pic.Name = "pic"
|
||||
Me.pic.Size = New System.Drawing.Size(184, 162)
|
||||
Me.pic.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom
|
||||
Me.pic.TabIndex = 0
|
||||
Me.pic.TabStop = False
|
||||
'
|
||||
'btn
|
||||
'
|
||||
Me.btn.Location = New System.Drawing.Point(39, 226)
|
||||
Me.btn.Name = "btn"
|
||||
Me.btn.Size = New System.Drawing.Size(75, 23)
|
||||
Me.btn.TabIndex = 1
|
||||
Me.btn.UseVisualStyleBackColor = True
|
||||
'
|
||||
'txt
|
||||
'
|
||||
Me.txt.Location = New System.Drawing.Point(387, 52)
|
||||
Me.txt.Name = "txt"
|
||||
Me.txt.Size = New System.Drawing.Size(525, 20)
|
||||
Me.txt.TabIndex = 2
|
||||
'
|
||||
'Button1
|
||||
'
|
||||
Me.Button1.Location = New System.Drawing.Point(387, 115)
|
||||
Me.Button1.Name = "Button1"
|
||||
Me.Button1.Size = New System.Drawing.Size(93, 23)
|
||||
Me.Button1.TabIndex = 1
|
||||
Me.Button1.Text = "Verschlüsseln"
|
||||
Me.Button1.UseVisualStyleBackColor = True
|
||||
'
|
||||
'TextBox1
|
||||
'
|
||||
Me.TextBox1.Location = New System.Drawing.Point(387, 78)
|
||||
Me.TextBox1.Name = "TextBox1"
|
||||
Me.TextBox1.Size = New System.Drawing.Size(525, 20)
|
||||
Me.TextBox1.TabIndex = 2
|
||||
'
|
||||
'Button2
|
||||
'
|
||||
Me.Button2.Location = New System.Drawing.Point(486, 115)
|
||||
Me.Button2.Name = "Button2"
|
||||
Me.Button2.Size = New System.Drawing.Size(93, 23)
|
||||
Me.Button2.TabIndex = 1
|
||||
Me.Button2.Text = "Entschlüsseln"
|
||||
Me.Button2.UseVisualStyleBackColor = True
|
||||
'
|
||||
'TextBox2
|
||||
'
|
||||
Me.TextBox2.Location = New System.Drawing.Point(387, 12)
|
||||
Me.TextBox2.Name = "TextBox2"
|
||||
Me.TextBox2.Size = New System.Drawing.Size(525, 20)
|
||||
Me.TextBox2.TabIndex = 2
|
||||
'
|
||||
'lblCode
|
||||
'
|
||||
Me.lblCode.AutoSize = True
|
||||
Me.lblCode.Location = New System.Drawing.Point(315, 18)
|
||||
Me.lblCode.Name = "lblCode"
|
||||
Me.lblCode.Size = New System.Drawing.Size(32, 13)
|
||||
Me.lblCode.TabIndex = 3
|
||||
Me.lblCode.Text = "Code"
|
||||
'
|
||||
'Label1
|
||||
'
|
||||
Me.Label1.AutoSize = True
|
||||
Me.Label1.Location = New System.Drawing.Point(315, 55)
|
||||
Me.Label1.Name = "Label1"
|
||||
Me.Label1.Size = New System.Drawing.Size(28, 13)
|
||||
Me.Label1.TabIndex = 3
|
||||
Me.Label1.Text = "Text"
|
||||
'
|
||||
'Label2
|
||||
'
|
||||
Me.Label2.AutoSize = True
|
||||
Me.Label2.Location = New System.Drawing.Point(315, 81)
|
||||
Me.Label2.Name = "Label2"
|
||||
Me.Label2.Size = New System.Drawing.Size(66, 13)
|
||||
Me.Label2.TabIndex = 3
|
||||
Me.Label2.Text = "Verschl.Text"
|
||||
'
|
||||
'frmQRCode
|
||||
'
|
||||
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
|
||||
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
|
||||
Me.ClientSize = New System.Drawing.Size(965, 535)
|
||||
Me.Controls.Add(Me.Label2)
|
||||
Me.Controls.Add(Me.Label1)
|
||||
Me.Controls.Add(Me.lblCode)
|
||||
Me.Controls.Add(Me.TextBox1)
|
||||
Me.Controls.Add(Me.TextBox2)
|
||||
Me.Controls.Add(Me.txt)
|
||||
Me.Controls.Add(Me.Button2)
|
||||
Me.Controls.Add(Me.Button1)
|
||||
Me.Controls.Add(Me.btn)
|
||||
Me.Controls.Add(Me.pic)
|
||||
Me.Name = "frmQRCode"
|
||||
Me.Text = "frmQRCode"
|
||||
CType(Me.pic, System.ComponentModel.ISupportInitialize).EndInit()
|
||||
Me.ResumeLayout(False)
|
||||
Me.PerformLayout()
|
||||
|
||||
End Sub
|
||||
Friend WithEvents pic As System.Windows.Forms.PictureBox
|
||||
Friend WithEvents btn As System.Windows.Forms.Button
|
||||
Friend WithEvents txt As System.Windows.Forms.TextBox
|
||||
Friend WithEvents Button1 As System.Windows.Forms.Button
|
||||
Friend WithEvents TextBox1 As System.Windows.Forms.TextBox
|
||||
Friend WithEvents Button2 As System.Windows.Forms.Button
|
||||
Friend WithEvents TextBox2 As System.Windows.Forms.TextBox
|
||||
Friend WithEvents lblCode As System.Windows.Forms.Label
|
||||
Friend WithEvents Label1 As System.Windows.Forms.Label
|
||||
Friend WithEvents Label2 As System.Windows.Forms.Label
|
||||
End Class
|
||||
120
SDL/Registrierkasse/frmQRCode.resx
Normal file
120
SDL/Registrierkasse/frmQRCode.resx
Normal file
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
88
SDL/Registrierkasse/frmQRCode.vb
Normal file
88
SDL/Registrierkasse/frmQRCode.vb
Normal file
@@ -0,0 +1,88 @@
|
||||
Imports ThoughtWorks.QRCode.Codec
|
||||
Imports System.IO
|
||||
Imports System.Security.Cryptography
|
||||
Imports System.Text
|
||||
|
||||
Public Class frmQRCode
|
||||
|
||||
Private Sub btn_Click(sender As Object, e As EventArgs) Handles btn.Click
|
||||
Dim img As Image
|
||||
Dim bmp As Bitmap
|
||||
Dim QR As New QRCodeEncoder
|
||||
|
||||
QR.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE
|
||||
QR.QRCodeScale = 2
|
||||
QR.QRCodeVersion = 5
|
||||
QR.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.L
|
||||
img = QR.Encode("TEST DATA")
|
||||
bmp = New Bitmap(img)
|
||||
bmp.Save(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) & "\test.bmp")
|
||||
pic.ImageLocation = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) & "\test.bmp"
|
||||
End Sub
|
||||
|
||||
|
||||
|
||||
Dim Aes256Base64Encrypter As New Aes256Base64Encrypter
|
||||
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
|
||||
Try
|
||||
TextBox1.Text = Aes256Base64Encrypter.Encrypt(txt.Text, TextBox2.Text)
|
||||
Catch ex As Exception
|
||||
MsgBox(ex.Message)
|
||||
End Try
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
|
||||
Try
|
||||
txt.Text = Aes256Base64Encrypter.Decrypt(TextBox1.Text, TextBox2.Text)
|
||||
Catch ex As Exception
|
||||
MsgBox(ex.Message)
|
||||
End Try
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub TextBox2_TextChanged(sender As Object, e As EventArgs) Handles TextBox2.TextChanged
|
||||
|
||||
End Sub
|
||||
End Class
|
||||
Public Class Aes256Base64Encrypter
|
||||
Public Function Encrypt(ByVal plainText As String, ByVal secretKey As String) As String
|
||||
Dim encryptedPassword As String = Nothing
|
||||
Using outputStream As MemoryStream = New MemoryStream()
|
||||
Dim algorithm As RijndaelManaged = getAlgorithm(secretKey)
|
||||
Using cryptoStream As CryptoStream = New CryptoStream(outputStream, algorithm.CreateEncryptor(), CryptoStreamMode.Write)
|
||||
Dim inputBuffer() As Byte = Encoding.Unicode.GetBytes(plainText)
|
||||
cryptoStream.Write(inputBuffer, 0, inputBuffer.Length)
|
||||
cryptoStream.FlushFinalBlock()
|
||||
encryptedPassword = Convert.ToBase64String(outputStream.ToArray())
|
||||
End Using
|
||||
End Using
|
||||
Return encryptedPassword
|
||||
End Function
|
||||
|
||||
Public Function Decrypt(ByVal encryptedBytes As String, ByVal secretKey As String) As String
|
||||
Dim plainText As String = Nothing
|
||||
Using inputStream As MemoryStream = New MemoryStream(Convert.FromBase64String(encryptedBytes))
|
||||
Dim algorithm As RijndaelManaged = getAlgorithm(secretKey)
|
||||
Using cryptoStream As CryptoStream = New CryptoStream(inputStream, algorithm.CreateDecryptor(), CryptoStreamMode.Read)
|
||||
Dim outputBuffer(0 To CType(inputStream.Length - 1, Integer)) As Byte
|
||||
Dim readBytes As Integer = cryptoStream.Read(outputBuffer, 0, CType(inputStream.Length, Integer))
|
||||
plainText = Encoding.Unicode.GetString(outputBuffer, 0, readBytes)
|
||||
End Using
|
||||
End Using
|
||||
Return plainText
|
||||
End Function
|
||||
|
||||
Private Function getAlgorithm(ByVal secretKey As String) As RijndaelManaged
|
||||
Const salt As String = "AES" '??
|
||||
Const keySize As Integer = 256
|
||||
|
||||
Dim keyBuilder As Rfc2898DeriveBytes = New Rfc2898DeriveBytes(secretKey, Encoding.Unicode.GetBytes(salt))
|
||||
Dim algorithm As RijndaelManaged = New RijndaelManaged()
|
||||
algorithm.KeySize = keySize
|
||||
algorithm.IV = keyBuilder.GetBytes(CType(algorithm.BlockSize / 8, Integer))
|
||||
algorithm.Key = keyBuilder.GetBytes(CType(algorithm.KeySize / 8, Integer))
|
||||
algorithm.Padding = PaddingMode.PKCS7
|
||||
Return algorithm
|
||||
End Function
|
||||
End Class
|
||||
76
SDL/Registrierkasse/modRegKasse.vb
Normal file
76
SDL/Registrierkasse/modRegKasse.vb
Normal file
@@ -0,0 +1,76 @@
|
||||
Imports Registrierkasse
|
||||
|
||||
Module modRegKasse
|
||||
|
||||
Sub Test1()
|
||||
Console.WriteLine("TEST1 - A-SIT Test Daten Entschlüsseln")
|
||||
|
||||
Dim kassenID As String
|
||||
Dim belegnummer As String
|
||||
kassenID = "DEMO-CASH-BOX426"
|
||||
belegnummer = "776732"
|
||||
Console.WriteLine("Kassen ID: " + kassenID)
|
||||
Console.WriteLine("Belegnummer: " + belegnummer)
|
||||
|
||||
Dim aesB64 As String
|
||||
aesB64 = "K7L9NyWiC1xKuyBO/7DuoRFqsqgq+m3t8hjOCMNXBio="
|
||||
|
||||
Dim aesBytes As Byte()
|
||||
aesBytes = Convert.FromBase64String(aesB64)
|
||||
|
||||
Dim encB64 As String
|
||||
encB64 = "4VjrD6b2vGo="
|
||||
|
||||
Dim encBytes As Byte()
|
||||
encBytes = Convert.FromBase64String(encB64)
|
||||
|
||||
Dim umsatz As Long
|
||||
umsatz = RKAesIcm.Decrypt(encBytes, kassenID, belegnummer, aesBytes)
|
||||
|
||||
Console.WriteLine("Entschlüsselter Umsatz : " + umsatz.ToString())
|
||||
Console.WriteLine("")
|
||||
End Sub
|
||||
|
||||
Sub Test2()
|
||||
Console.WriteLine("TEST2 - Verschlüsseln/Entschlüsseln")
|
||||
|
||||
REM Generate new AES Key
|
||||
Dim aesKey As Byte()
|
||||
aesKey = RKAesIcm.GenerateKey()
|
||||
Console.WriteLine("AES key (B64): " + Convert.ToBase64String(aesKey))
|
||||
|
||||
Dim kassenID As String
|
||||
Dim belegnummer As String
|
||||
kassenID = "Register3874"
|
||||
belegnummer = "39920034"
|
||||
Console.WriteLine("Kassen ID: " + kassenID)
|
||||
Console.WriteLine("Belegnummer: " + belegnummer)
|
||||
|
||||
Dim umsatz As Long
|
||||
umsatz = 2349.0
|
||||
Console.WriteLine("Umsatz: " + umsatz.ToString())
|
||||
|
||||
|
||||
Dim encryptedBytes As Byte()
|
||||
encryptedBytes = RKAesIcm.Encrypt(umsatz, kassenID, belegnummer, aesKey)
|
||||
Console.WriteLine("Verschlüsselter Umsatz (B64): " + Convert.ToBase64String(encryptedBytes))
|
||||
|
||||
Dim umsatz2 As Long
|
||||
umsatz2 = RKAesIcm.Decrypt(encryptedBytes, kassenID, belegnummer, aesKey)
|
||||
Console.WriteLine("Entschlüsselter Umsatz : " + umsatz2.ToString())
|
||||
Console.WriteLine("")
|
||||
End Sub
|
||||
|
||||
|
||||
|
||||
Sub Main()
|
||||
REM TEST 1 - A-SIT Test Daten Entschlüsseln
|
||||
Test1()
|
||||
|
||||
REM TEST2 - Verschlüsseln/Entschlüsseln
|
||||
Test2()
|
||||
|
||||
Console.ReadLine()
|
||||
End Sub
|
||||
|
||||
End Module
|
||||
77
SDL/Registrierkasse/modUmsatzzaehler.vb
Normal file
77
SDL/Registrierkasse/modUmsatzzaehler.vb
Normal file
@@ -0,0 +1,77 @@
|
||||
|
||||
Imports Registrierkasse
|
||||
|
||||
Module modUmsatzzaehler
|
||||
|
||||
Sub Test1()
|
||||
Console.WriteLine("TEST1 - A-SIT Test Daten Entschlüsseln")
|
||||
|
||||
Dim kassenID As String
|
||||
Dim belegnummer As String
|
||||
kassenID = "DEMO-CASH-BOX426"
|
||||
belegnummer = "776732"
|
||||
Console.WriteLine("Kassen ID: " + kassenID)
|
||||
Console.WriteLine("Belegnummer: " + belegnummer)
|
||||
|
||||
Dim aesB64 As String
|
||||
aesB64 = "K7L9NyWiC1xKuyBO/7DuoRFqsqgq+m3t8hjOCMNXBio="
|
||||
|
||||
Dim aesBytes As Byte()
|
||||
aesBytes = Convert.FromBase64String(aesB64)
|
||||
|
||||
Dim encB64 As String
|
||||
encB64 = "4VjrD6b2vGo="
|
||||
|
||||
Dim encBytes As Byte()
|
||||
encBytes = Convert.FromBase64String(encB64)
|
||||
|
||||
Dim umsatz As Long
|
||||
umsatz = RKAesIcm.Decrypt(encBytes, kassenID, belegnummer, aesBytes)
|
||||
|
||||
Console.WriteLine("Entschlüsselter Umsatz : " + umsatz.ToString())
|
||||
Console.WriteLine("")
|
||||
End Sub
|
||||
|
||||
Sub Test2()
|
||||
Console.WriteLine("TEST2 - Verschlüsseln/Entschlüsseln")
|
||||
|
||||
REM Generate new AES Key
|
||||
Dim aesKey As Byte()
|
||||
aesKey = RKAesIcm.GenerateKey()
|
||||
Console.WriteLine("AES key (B64): " + Convert.ToBase64String(aesKey))
|
||||
|
||||
Dim kassenID As String
|
||||
Dim belegnummer As String
|
||||
kassenID = "Register3874"
|
||||
belegnummer = "39920034"
|
||||
Console.WriteLine("Kassen ID: " + kassenID)
|
||||
Console.WriteLine("Belegnummer: " + belegnummer)
|
||||
|
||||
Dim umsatz As Long
|
||||
umsatz = 2349.0
|
||||
Console.WriteLine("Umsatz: " + umsatz.ToString())
|
||||
|
||||
|
||||
Dim encryptedBytes As Byte()
|
||||
encryptedBytes = RKAesIcm.Encrypt(umsatz, kassenID, belegnummer, aesKey)
|
||||
Console.WriteLine("Verschlüsselter Umsatz (B64): " + Convert.ToBase64String(encryptedBytes))
|
||||
|
||||
Dim umsatz2 As Long
|
||||
umsatz2 = RKAesIcm.Decrypt(encryptedBytes, kassenID, belegnummer, aesKey)
|
||||
Console.WriteLine("Entschlüsselter Umsatz : " + umsatz2.ToString())
|
||||
Console.WriteLine("")
|
||||
End Sub
|
||||
|
||||
|
||||
|
||||
Public Sub Main()
|
||||
REM TEST 1 - A-SIT Test Daten Entschlüsseln
|
||||
Test1()
|
||||
|
||||
REM TEST2 - Verschlüsseln/Entschlüsseln
|
||||
Test2()
|
||||
|
||||
Console.ReadLine()
|
||||
End Sub
|
||||
|
||||
End Module
|
||||
Reference in New Issue
Block a user