在sql中解读字符串代码

时间:2015-07-21 19:19:21

标签: sql oracle reverse-engineering

我在Oracle SQL中有一个函数可以对给定的输入进行加扰。我需要解读它。

我需要一个基本上可以反转下面程序输出的程序。

source IN VARCHAR2
sGARBLED VARCHAR2(510);
index NUMBER;
length NUMBER;
onec NUMBER;

BEGIN
    length := LENGTH(source);
    IF length > 255 THEN
    length := 255;
      END IF;
 index := 1;
 sGARBLED := '';

 WHILE index <= length LOOP
    onec := ASCII(SUBSTR(source, index, 1)) - 30;
    IF (onec < 10) THEN
        sGARBLED := sGARBLED || '0';    
    END IF;
    sGARBLED := sGARBLED || CAST(onec AS VARCHAR2);
    index := index + 1;
  END LOOP;

 RETURN sGARBLED;
END

1 个答案:

答案 0 :(得分:0)

如果您在加扰之前只允许原始字符串中的字符值,则可能是字母表中的字符。

代码看起来像这样:

sgarbled in VARCHAR2 
UNsGARBLED VARCHAR2(255);

length NUMBER;
index NUMBER;
onec NUMBER;

BEGIN
length := LENGTH(sgarbled);
index := 1;
UNsGARBLED := '';

 WHILE index <= length LOOP
 onec := SUBSTR(sgarbled, index, 1);
    IF (onec = '0') THEN
        onec := SUBSTR(sgarbled, (index + 1), 1) + 30; 
    ELSE 
        onec := SUBSTR(sgarbled, (index), 2) + 30;
    END IF;
    UNsGARBLED := UNsGARBLED || CAST(CHR(onec) AS VARCHAR2);
    index := index + 2;
  END LOOP;

 RETURN UNsGARBLED;
END

正如Llama先生所指出的那样,如果您允许原始输入字符串包含所有ASCII字符,则可能无法实现。