Feedback

IBAN Checksumme prüfen

Sprache: C#

Mit diesem Snippet kann man eine IBAN überprüfen, ob die Checksumme bzw. Prüfsumme für diese IBAN korrekt ist. Aufruf: [code]MyExtensions.IbanChecksumCheck("DE68 2105 0170 0012 3456 78");[/code] oder [code]"DE68 2105 0170 0012 3456 78".IbanChecksumCheck();[/code]
public static class MyExtensions
{
 /// <summary>
 /// Bestimmt ob die Checksumme einer IBAN gültig ist
 /// </summary>
 /// <param name="iban">Der zu prüfende IBAN (z.B: "DE68 2105 0170 0012 3456 78")</param>
 /// <returns><c>True</c>, wenn <paramref name="value"/> gültig ist. Andernfalls <c>False</c>.</returns>
	public static bool IbanChecksumCheck(this string iban)
	{
		string ibanCleared = iban.ToUpper().Replace(" ","").Replace("-","");
		string ibanSwapped = ibanCleared.Substring(4)+ibanCleared.Substring(0,4);
		string sum = ibanSwapped.Aggregate("", (current, c) => current + (char.IsLetter(c) ? (c - 55).ToString() : c.ToString()));

		var d = decimal.Parse(sum);
		return ((d % 97) == 1);
	}
}
public static class MyExtensions
{
 /// <summary>
 /// Bestimmt ob die Checksumme einer IBAN gültig ist
 /// </summary>
 /// <param name="iban">Der zu prüfende IBAN (z.B: "DE68 2105 0170 0012 3456 78")</param>
 /// <returns><c>True</c>, wenn <paramref name="value"/> gültig ist. Andernfalls <c>False</c>.</returns>
	public static bool IbanChecksumCheck(this string iban)
	{
		string ibanCleared = iban.ToUpper().Replace(" ","").Replace("-","");
		string ibanSwapped = ibanCleared.Substring(4)+ibanCleared.Substring(0,4);
		string sum = ibanSwapped.Aggregate("", (current, c) => current + (char.IsLetter(c) ? (c - 55).ToString() : c.ToString()));

		var d = decimal.Parse(sum);
		return ((d % 97) == 1);
	}
}

1 Kommentar

  1. Hier eine Übersetzung in T-SQL von Andreas Henke, danke dafür!

    [code]
    /****** Object: UserDefinedFunction [dbo].[checkIban] Script Date: 07.09.2021 13:54:23 ******/
    SET ANSI_NULLS ON
    GO

    SET QUOTED_IDENTIFIER ON
    GO

    — =============================================
    — Author: Andreas Henke
    — Create Date: 07.09.2021
    — Description: Berechnung der Prüfziffer für IBAN
    — =============================================
    CREATE FUNCTION [dbo].[checkIban]
    (
    @iban nvarchar(50)
    )
    RETURNS bit
    AS
    BEGIN
    — Declare the return variable here
    DECLARE @result bit

    –tribute to pocki_c at https://dotnet-snippets.de/snippet/iban-checksumme-pruefen/3809
    DECLARE @ibanCleared nvarchar(22)
    set @ibanCleared = Replace(Replace(Upper(@iban),‘ ‚,“),‘-‚,“);

    Declare @ibanSwapped nvarchar(24)
    Set @ibanSwapped = Substring(@ibanCleared,5,18)+Convert(nvarchar(2),ASCII(Substring(@ibancleared,1,1))-55)+Convert(nvarchar(2),ASCII(Substring(@ibancleared,2,1))-55)+’00‘

    Declare @d decimal(24,0)
    set @d= TRY_CAST(@ibanSwapped as decimal(24,0))

    SELECT @result = case when (98-(@d % 97) = TRY_CAST(Substring(@ibanCleared,3,2) as decimal(2,0))) then 1 else 0 end

    RETURN @result
    END
    GO
    [/code]