`
hurunhui
  • 浏览: 10818 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

对称加解密函数

阅读更多
--delphi

procedure Encrypt(Value: PAnsiChar; Size: Integer; const PSW: AnsiString); overload;
var
  i,l: Integer; w: PAnsiChar;
  procedure E(ic: PAnsiChar; pc: AnsiChar); begin ic^ := AnsiChar(Byte((ic^)) xor Byte(pc)); end;
begin
  w := PAnsiChar(PSW); l := Length(PSW);
  for i := 0 to Size - 1 do E((Value + i),(w + (i mod l))^);
end;

function Encrypt(Value: AnsiString; const PSW: AnsiString; Flag: Boolean): AnsiString; overload
var
  Data,Tmp: AnsiString;
  i: Integer;
  p: PAnsiChar;
begin
  Result := '';
  if Flag then begin // 加密后编码
    if Length(Value) = 0 then Exit;
    SetLength(Data,Length(Value)); StrCopy(PAnsiChar(Data),PAnsiChar(Value));
    Encrypt(PAnsiChar(Data),Length(Data),PSW); p := PAnsiChar(Data);
    for i := 0 to Length(Data) - 1 do
      Result := Result + IntToHex(Byte(AnsiChar((p+i)^)),2);
  end else begin     // 编码后解密
    p := PAnsiChar(UpperCase(Value));
    for i := 0 to Length(Value) - 1 do
      if not ((p + i)^ in ['0'..'9','A'..'F']) then Exit;
    for i := 1 to Length(Value) div 2 do
    begin
      Tmp := '0x' + Copy(Value,i*2-1,2);
      StrToInt(Tmp);
      Result := Result + AnsiChar(StrToInt(Tmp));
    end;
    Encrypt(PAnsiChar(Result),Length(Result),PSW);
  end;
end;

--c#

        public string Encrypt(string user, string pwd, bool flag)
{
            char[] uData, pData;
            string resultstr = "";
            if (flag)
            {
                uData = user.ToCharArray();
                pData = pwd.ToCharArray();
                for (int i = 0; i < pwd.Length; i++)
                {
                    string kk = (Convert.ToInt16(uData[i % user.Length] ^ pData[i])).ToString("X");
                    resultstr += (kk.Length % 2 == 0) ? kk : "0" + kk;
                }
            }
            else
            {
                uData = user.ToCharArray();
                for (int i = 0; i < pwd.Length / 2; i++)
                    resultstr += (char)(int.Parse(pwd.Substring(i * 2, 2), System.Globalization.NumberStyles.AllowHexSpecifier) ^ uData[i % user.Length]);
            }
            return resultstr;
        }


--java
    //加密解密方法
   public static String encrypt(String value, String pwd, boolean flag)
    {
        char[] uData, pData;
        StringBuffer sb = new StringBuffer();
        String str = "";
        if (flag)
        {
            uData = value.toCharArray();
            pData = pwd.toCharArray();

            for (int i = 0; i < uData.length; i++)
            {
                str = "0" + Integer.toHexString(uData[i] ^ pData[i % pData.length]);
                sb.append(str.substring(str.length() - 2));
            }
        }
        else
        {
            pData = pwd.toCharArray();
            for (int i = 0; i < value.length() / 2; i++)
            {
                sb.append((char) ((char)(int)Integer.valueOf(value.substring(
                    i * 2, (i + 1) * 2), 16) ^ pData[i % pData.length]));
            }
        }
        return sb.toString();
    }
分享到:
评论

相关推荐

    RSA非对称加解密实例

    RSA非对称加密是一种广泛应用的公钥加密算法,由Ron Rivest、Adi Shamir和Leonard ...通过学习和理解"RSA非对称加解密实例"的源码,开发者可以更好地掌握加密解密技术,并将其应用到实际项目中,保障数据的安全传输。

    RSA非对称加解密算法代码

    "MyRsa"这个文件可能是包含以上功能的源代码文件,可能有C++或C#实现,其中可能包括类或函数来生成密钥对、进行加密和解密操作,并提供了测试用例以确保算法的正确性。对于开发者来说,理解和实现这样的代码有助于...

    PB字符串加密、解密函数

    在实际应用中,PB字符串加密和解密函数通常会结合使用,比如先使用非对称加密算法加密一个会话密钥,然后使用这个密钥执行对称加密来保护大量数据。这样的混合策略既保证了速度,又确保了安全性。 编写PB加密函数时...

    加密解密函数

    这些控件可能包含内置的加密和解密功能,开发者可以通过调用其方法来实现数据的加解密。 "源码"是指编程语言的原始代码,它可以被编译或解释成可执行程序。对于加密解密函数,源码提供了透明度,允许开发者查看并...

    PHP基于密钥的加密解密函数

    - `openssl_decrypt()`: 对应的解密函数,它使用相同的密钥和参数(除了密文)来恢复原始数据。 4. **加密算法** - PHP支持多种加密算法,如AES(高级加密标准)、DES、3DES等。AES是一种广泛应用的对称加密算法...

    C# 加解密 (对称,非对称,散列)

    在C#中,加解密是安全领域的重要组成部分,用于保护数据的隐私和安全性。本文将详细介绍对称加密(AES和DES)、非对称加密(RSA)以及散列函数(MD5)在C#中的应用。 1. **对称加密**: 对称加密是一种常见的加密...

    RSA非对称加密解密Delphi源码

    "RSA加解密及公钥密生成工具"这个文件可能是包含上述功能的Delphi源码文件或者一个简单的GUI应用程序,它提供了一个用户友好的界面,使得用户能够轻松地生成RSA密钥对,并进行加密和解密操作。 通过学习和理解这段...

    易语言一个自编的加解密函数.rar

    如果"易语言一个自编的加解密函数"中包含对称加密函数,可能涉及到密钥的生成、存储和交换等过程的设计。 2. 非对称加密:非对称加密使用一对公钥和私钥,公钥可以公开,用于加密;私钥必须保密,用于解密。这种...

    C语言实现DES加密解密算法

    函数 `DES.EncryptBlock` 实现了加密单个分组的操作,而函数 `DES_DecryptBlock` 实现了解密单个分组的操作。这些函数使用子密钥和加密解密算法来实现加密和解密操作。 基本操作 DES 算法中还涉及到一些基本操作,...

    C#加密解密的函数参考

    C#加密解密的函数参考 在软件开发中,数据安全是一个非常重要的方面,特别是在涉及到敏感数据时,如密码、信用卡号码等。C#作为一个强大的编程语言,提供了多种加密和解密的方法来保护数据。本文将介绍C#中的一些...

    C#基于Hmac sha256及Hmac sha 512 做的对称加密解密

    在IT安全领域,对称加密和哈希函数是两种常用的技术。C#作为一种广泛应用于Windows平台的编程语言,提供了丰富的库来支持这些功能。本文将深入探讨如何在C#中利用HMAC(Hash-based Message Authentication Code)...

    SQL证书对称非对称加解密语法

    总结来说,SQL证书对称和非对称加解密提供了强大的数据保护手段。通过对数据进行加密,我们可以在存储和传输数据时保护其不被未经授权的访问。对称加密适合大量数据的快速加密,而非对称加密则在需要更高安全级别的...

    易语言一个自编的加解密函数.7z

    《易语言自编加解密函数详解》 在信息技术领域,数据的安全性是至关重要的,因此加解密技术被广泛应用。易语言,作为一款国产的编程语言,以其简单易学的特点,深受初学者和专业开发者的喜爱。本文将深入探讨在...

    C# 对称加密解密算法类

    在C#编程中,对称加密是一种常见的数据保护方法,它使用相同的密钥进行加密和解密过程。这里我们讨论的类"SymmetricMethod"是一个自定义的C#类,用于实现对称加密算法,特别是使用了RijndaelManaged算法。Rijndael是...

    对称加密解密测试密码

    本项目主要涉及到对称加密算法的加解密操作,并在密钥改变时分析其对解密结果的影响。 对称加密算法的历史可以追溯到古罗马时期,但现代计算机科学中的对称加密主要基于更复杂的数学原理。常见的对称加密算法有DES...

    MFC实现AES非对称加密解密算法

    然后,使用解密后的AES密钥和IV,调用解密函数处理密文,恢复出原始的明文数据。 在MFC中,你可能需要创建一个封装这些加密操作的类,提供方便的接口供其他部分的代码使用。类可以包含初始化方法、加密和解密方法,...

    SQLSERVER加密解密函数(非对称密钥 证书加密 对称密钥)使用方法代码

    本篇文章将详细探讨SQL Server中的加密解密函数,包括非对称密钥、证书加密、对称密钥以及通行短语(PassPhrase)加密。 非对称密钥是一种双钥加密技术,它包含一对公钥和私钥。公钥用于加密数据,而私钥用于解密。...

    对称加解密及文件HASH

    在给定的"对称加解密及文件HASH"工具类中,可能包含了实现DES加密和解密功能的代码,以及计算文件哈希值的函数。这些工具可以帮助开发者快速集成数据加密和完整性验证功能,提升软件的安全性。使用时,开发者可以...

    易语言源码易语言一个自编的加解密函数.rar

    这个压缩包“易语言源码易语言一个自编的加解密函数.rar”显然包含了一个用易语言编写的自定义加解密函数的源代码。 加解密函数在计算机科学中扮演着至关重要的角色,主要用于数据的安全传输和存储。加密是将原始...

Global site tag (gtag.js) - Google Analytics