CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

求助:把C算法Tea加密改成C#算法。500分相谢!

楼主geniusoft(jubacn.com)2005-06-03 06:49:50 在 .NET技术 / C# 提问

下面算法改成  
  private   byte[]   encrpt(byte[]   inbytes])  
  {  
      //请在这儿实现下面c语言的转换功能。  
  }  
   
  /**********************************************************  
        TEA   -   Tiny   Encryption   Algorithm  
        Feistel   cipher   by   David   Wheeler   &   Roger   M.   Needham  
        (extended   version)  
    **********************************************************/  
   
  #define   ROUNDS   32  
  #define   DELTA   0x9e3779b9   /*   sqr(5)-1   *   2^31   */  
   
  #include   "ctypes.h"  
   
  /**********************************************************  
        Input   values:   k[4] 128-bit   key  
  v[2]         64-bit   plaintext   block  
        Output   values: v[2]         64-bit   ciphertext   block    
    **********************************************************/  
   
  void   tean(word32   *k,   word32   *v,   long   N)   {  
      word32   y=v[0],   z=v[1];  
      word32   limit,sum=0;  
      if(N>0)   {   /*   ENCRYPT   */  
          limit=DELTA*N;  
          while(sum!=limit)   {  
              y+=((z<<4)^(z>>5))   +   (z^sum)   +   k[sum&3];  
              sum+=DELTA;  
              z+=((y<<4)^(y>>5))   +   (y^sum)   +   k[(sum>>11)&3];  
          }  
      }   else   {   /*   DECRYPT   */  
          sum=DELTA*(-N);  
          while(sum)   {  
              z-=((y<<4)^(y>>5))   +   (y^sum)   +   k[(sum>>11)&3];  
              sum-=DELTA;  
              y-=((z<<4)^(z>>5))   +   (z^sum)   +   k[sum&3];  
          }  
      }  
      v[0]=y;   v[1]=z;  
  }  
   
  void   cl_enc_block(word32   *k,   word32   *v)   {  
    tean(k,v,ROUNDS);  
  }  
   
  void   cl_dec_block(word32   *k,   word32   *v)   {  
    tean(k,v,-ROUNDS);  
  }  
  问题点数:0、回复次数:5Top

1 楼geniusoft(jubacn.com)回复于 2005-06-03 10:54:09 得分 0

hi,没人能做吗?Top

2 楼gaoyangtu(该去得都去了)回复于 2005-07-13 09:58:40 得分 0

关注啊,期待ingTop

3 楼begincsdn(CNetware)回复于 2005-07-13 11:11:10 得分 0

private   unsafe   void   tean(int*   k,   int*   v,   int   modopt(IsLongModifier)   N)  
  {  
      int   num3   =   v[0];  
      int   num2   =   v[1];  
      int   num1   =   0;  
      if   (N   >   0)  
      {  
          int   num4   =   N   *   -1640531527;  
          while   (true)  
          {  
              if   (num1   ==   num4)  
              {  
                  break;  
              }  
              num3   +=   ((((num2   <<   4)   ^   (num2   >>   5))   +   (num2   ^   num1))   +   k[num1   &   3]);  
              num1   +=   -1640531527;  
              num2   +=   ((((num3   <<   4)   ^   (num3   >>   5))   +   (num3   ^   num1))   +   k[(num1   >>   11)   &   3]);  
          }  
      }  
      else  
      {  
          num1   =   -N   *   -1640531527;  
          while   (true)  
          {  
              if   (num1   ==   0)  
              {  
                  break;  
              }  
              num2   -=   ((((num3   <<   4)   ^   (num3   >>   5))   +   (num3   ^   num1))   +   k[(num1   >>   11)   &   3]);  
              num1   -=   -1640531527;  
              num3   -=   ((((num2   <<   4)   ^   (num2   >>   5))   +   (num2   ^   num1))   +   k[num1   &   3]);  
          }  
      }  
      v[0]   =   num3;  
      v[1]   =   num2;  
  }  
  Top

4 楼begincsdn(CNetware)回复于 2005-07-13 11:15:03 得分 0

为什么有那么多人喜欢自己写加密或解决算法??  
  最简单的加密就是base64啦。  
   
  RSA或DPAPI不好用吗?  
  给你一个DPAPI吧。  
  using   System;  
  using   System.Runtime.InteropServices;  
   
  namespace   CNetware.Data.DPAPI  
  {  
      ///   <summary>  
      ///   DataProtector   是使用   DPAPI   来加密和解密数据的托管库。  
      ///   Web   应用程序经常需要在应用程序配置文件中存储与安全性密切相关的数据,  
      ///   如数据库连接字符串和服务帐户凭据。出于安全性考虑,决不要以明文形式存  
      ///   储此类信息,而一定要在存储之前进行加密。本类是一个托管类库,它用于封装  
      ///   对数据保护   API   (DPAPI)   的调用以使用基于计算机或用户的密钥存储来加密和  
      ///   解密数据。可随后从其他托管应用程序使用该库,如   ASP.NET   Web   应用程序、Web  
      ///   服务以及企业服务应用程序。      
      ///   DPAPI   是加密   API   (Crypto   API)   的一部分并且是在   crypt32.dll   中实现的。它  
      ///   包含两个方法:CryptProtectData   和   CryptUnprotectData,本类库中方法被引用  
      ///   成了私有方法,在类外不可访问。  
      ///   DPAPI   特别有用,因为它能够消除使用密码的应用程序所带来的密钥管理问题。虽  
      ///   然加密能确保数据安全,但您必须采取额外的步骤来确保密钥的安全。DPAPI   使用  
      ///   与   DPAPI   函数的调用代码关联的用户帐户的密码,以便派生加密密钥。因此,是  
      ///   操作系统(而非应用程序)管理着密钥。  
      ///    
      ///   DPAPI   能够与计算机存储或用户存储(需要一个已加载的用户配置文件)配合使用。  
      ///   DPAPI   默认情况下用于用户存储,但您可以通过将   CRYPTPROTECT_LOCAL_MACHINE    
      ///   标志传递给   DPAPI   函数来指定使用计算机存储。  
      ///    
      ///   这种用户配置文件方式提供了一个额外的安全层,因为它限制了哪些用户能访问机  
      ///   密内容。只有加密该数据的用户才能解密该数据。但是,当通过   ASP.NET   Web   应用  
      ///   程序使用   DPAPI   时,使用用户配置文件需要您执行额外的开发工作,因为您需要采  
      ///   取明确的步骤来加载和卸载用户配置文件(ASP.NET   不会自动加载用户配置文件)。  
      ///    
      ///   计算机存储方式更容易开发,因为它不需要管理用户配置文件。但是,除非使用一个  
      ///   附加的熵参数,否则并不安全,因为该计算机的任何用户都可以解密数据。(熵是一  
      ///   个设计用来使解密机密内容更为困难的随机值)。使用附加的熵参数出现的问题在于  
      ///   它必须由应用程序安全地存储起来,这带来了另一个密钥管理问题。  
      ///    
      ///   注意:如果您将   DPAPI   和计算机存储一起使用,那么加密字符串仅适用于给定的计  
      ///   算机,因此您必须在每台计算机上生成加密数据。不要在场或群集中将加密数据从一  
      ///   台计算机复制到另一台计算机。如果将   DPAPI   和用户存储一起使用,则可以用一个漫  
      ///   游的用户配置文件在任何一台计算机上解密数据。  
      ///   </summary>  
  Top

5 楼begincsdn(CNetware)回复于 2005-07-13 11:17:28 得分 0

内容太多,请参考:  
  http://www.cnblogs.com/begincsdn/archive/2005/07/13/191987.htmlTop

相关问题

  • 加密算法!
  • 谁知道哪有DES加密算法的C++实现代码?
  • 高分求一C加密算法(必须自己用过)
  • *****高分寻求一个MD5加密算法的c源程序******
  • 将一段delphi加密码算法翻译为c#代码
  • 哪里有纯C的加密解密算法?
  • c#自带的3des加密算法,有个参数请教
  • c#的加密算法中密码能有多长?
  • linux c 怎样实现 md5 ,des 加密算法
  • 散分!请求提供des加密算法c++源码

关键词

  • asp.net
  • 加密
  • 算法
  • 应用程序
  • 用户
  • 计算机
  • 数据
  • 解密
  • word
  • 安全

得分解答快速导航

  • 帖主:geniusoft

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo