首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#:加密字符串,一次加密2位

C#:加密字符串,一次加密2位
EN

Stack Overflow用户
提问于 2009-10-27 23:00:59
回答 3查看 192关注 0票数 1

我被要求转换一些C++代码,以便我们可以在C#应用程序中使用它。这段代码用于解密在配置文件中嵌入和传递的注册许可证密钥。

对我来说,它看起来就像是一次加密两个字节的字符串(更正),对于我来说,我无法在C#中做类似的事情。

代码语言:javascript
复制
void APIENTRY EncryptRegBuffer(LPSTR StrInput,int SizeInput,LPSTR StrOut)
{
#define   SEMENTE 17
#define   COMUL   37
    WORD  randomic=SEMENTE;
    WORD *pw;
    int   i;

    memcpy(StrOut,StrInput,SizeInput);
    StrOut[SizeInput]=NULO;
    pw=(WORD *) StrOut;
    for(i=0; i < (SizeInput/2); ++i) {
        randomic*=COMUL;
        *pw+=randomic;
        ++pw;
    }
}

有人可以建议我使用C#对字符串执行这些类型的操作的方法吗?

EN

回答 3

Stack Overflow用户

发布于 2009-10-27 23:10:00

它实际上是一次用两个字节(字长)对字符串进行编码。编写此代码的另一种方法是:

代码语言:javascript
复制
int j=0;
for(i=0; i<SizeInput/2; ++i) {
  randomic *= COMUL;
  StrOut[j] += randomic;
  j += 2;
}
票数 2
EN

Stack Overflow用户

发布于 2009-10-27 23:39:51

不如这样吧:

代码语言:javascript
复制
public string EncryptRegBuffer(string input)
{
    const UInt16 SEMENTE = 17;
    const UInt16 COMUL = 37;

    int randomic = SEMENTE;
    string output = "";

    foreach (char c in input) {
        randomic *= COMUL;
        output += (char)(c + randomic);
    }
    return output;
}
票数 1
EN

Stack Overflow用户

发布于 2009-10-27 23:10:18

我不明白你认为这是两个“比特”同时发生的地方。它似乎是使用整字节工作的。你需要做的就是:

代码语言:javascript
复制
byte[] bytes = ASCII.GetBytes(inputString);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1631406

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档