亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? pegwit.c

?? 加密算法實現 Pegwit is a program for performing public key file encryption and authentication. Encr
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*
  pegwit by George Barwood <george.barwood@dial.pipex.com>
  100% Public Domain
  clearsigning code by Mr. Tines <tines@windsong.demon.co.uk>
  also the filter mode support.
*/

#include <string.h>
#include <stdio.h>
#include <time.h>
#include <ctype.h>

#include "ec_crypt.h"
#include "sha1.h"
#include "square.h"
#include "sqcts.h"
#include "binasc.h"

#if defined(__BORLANDC__) && defined(__MSDOS__)
#include <dos.h>
unsigned _stklen = 32768u;
#endif


const char manual /*:)*/ [] = 
  "Pegwit v8.7\n"
  "Usage (init/encrypt/decrypt/sign/verify) :\n"
  "-i <secret-key >public-key\n"
  "-e public-key plain cipher <random-junk\n"
  "-d cipher plain <secret-key\n"
  "-s plain <secret-key >signature\n"
  "-v public-key plain <signature\n"
  "-E plain cipher <key\n"
  "-D cipher plain <key\n"
  "-S text <secret-key >clearsigned-text\n"
  "-V public-key clearsigned-text >text\n"
  "-f[operation] [type pegwit -f for details]\n";
const char filterManual [] =
  "Pegwit [filter sub-mode]\n"
  "Usage (encrypt/decrypt/sign/verify) :\n"
  "-fe public-key random-junk <plain >ascii-cipher\n"
  "-fd secret-key <ascii-cipher >plain\n"
  "-fE key <plain >ascii-cipher\n"
  "-fD key <ascii-cipher >plain\n"
  "-fS secret-key <text >clearsigned-text\n"
  "-fV public-key <clearsigned-text >text\n";


const char pubkey_magic [] = "pegwit v8 public key =";
const char err_output [] = "Pegwit, error writing output, disk full?";
const char err_open_failed [] = "Pegwit, error : failed to open ";
const char err_bad_public_key [] = "Pegwit, error : public key must start with \"";
const char err_signature [] = "signature did not verify\a\a\a\n";
const char err_decrypt [] = "decryption failed\a\a\a\n";

const char begin_clearsign [] = "###\n";
const char end_clearsign [] = "### end pegwit v8 signed text\n";
const char end_ckarmour [] = "### end pegwit v8.7 -fE encrypted text\n";
const char end_pkarmour [] = "### end pegwit v8.7 -fe encrypted text\n";
const char escape [] = "## ";
const char warn_long_line [] = 
  "Very long line - > 8k bytes.  Binary file?\n"
  "Clearsignature dubious\a\a\a\n";
const char warn_control_chars [] = 
  "Large number of control characters.  Binary file?\n"
  "Clearsignature dubious\a\a\a\n";
const char err_clearsig_header_not_found [] = 
  "Clearsignature header \"###\" not found\a\a\a\n";


#define BPB (SQUARE_BLOCKSIZE) /* 16 */
#define NB  ((GF_M+1+7)/8)

void hash_process_file( hash_context * c, FILE * f_inp, unsigned barrel )
{
  unsigned n;
  unsigned char buffer[0x4000];
  while (1)
  {
    n = fread( buffer, 1, 0x4000, f_inp ); /* note: no error check */
    if (n==0) break;
    {
      unsigned j;
      for ( j=0; j<barrel; j+=1 )
      {
        hash_process( c+j, buffer, n );
      }
    }
    if (n < 0x4000) break;
  }
  memset( buffer, sizeof(buffer), 0 );
  fseek( f_inp, 0, SEEK_SET );
}

int downcase(char c)
{
      if(isascii(c)) if(isupper(c)) return tolower(c);
      return c;
}

int case_blind_compare(const char *a, const char *b)
{
    while(*a && *b)
    {
        if(downcase(*a) < downcase(*b)) return -1;
        if(downcase(*a) > downcase(*b)) return 1;
        a += 1;
        b += 1;
    }
    if(*a) return 1;
    if(*b) return -1;
    return 0;
}

void hash_process_ascii( hash_context * c, FILE * f_inp,
  FILE * f_out, unsigned barrel, int write)
{
  unsigned n;
  unsigned char buffer[0x4000], *begin;
  unsigned long bytes=0, control=0;

  while (1)
  {
      unsigned i;
      
      fgets((char*)buffer, 0x4000, f_inp);  /* EOL -> \n */
      if(feof(f_inp)) break;

      n = strlen((char*)buffer);
      begin = buffer;

      if(n > 0x2000)
      {
        fputs( warn_long_line, f_out );
      }

      bytes += n;
      for(i=0; i<n; ++i)
      {
        if(buffer[i] >= 0x7F) ++control;
        if(buffer[i] < ' ' && buffer[i] != '\n' && buffer[i] != '\r'
          && buffer[i] != '\t') ++control;
      }

      if(write)
      {
        if (!strncmp( (char*)buffer, escape, 2 ) ||
            !case_blind_compare((char*)buffer, "from") )
        {
          fputs( escape, f_out );
        }
        fputs( (char*)buffer, f_out);
      }
      else
      {
        if(!strncmp((char*)buffer, escape, 3)) {n-=3, begin+=3;}
        else if(!strncmp((char*)buffer, end_clearsign, 3)) break; /* must be end of packet */
        fputs((char*)begin, f_out);
      }

      for ( i=0; i<barrel; ++i )
      {
        hash_process( c+i, begin, n );
      }
  }
  if(control*6 > bytes)
  {
    fputs( warn_control_chars, stderr );
  }

  memset( buffer, sizeof(buffer), 0 );
}

typedef struct /* Whole structure will be hashed */
{
  unsigned count;        /* Count of words */
  word32 seed[2+HW*3];   /* Used to crank prng */
} prng;

void prng_init( prng * p )
{
  memset( p, 0, sizeof(*p) );
}

void prng_set_secret( prng * p, FILE * f_key )
{
  hash_context c[1];
  hash_initial( c );
  hash_process_file( c, f_key, 1 );
  hash_final( c, p->seed+1 );
  p->count = 1+HW;  
}

void prng_init_mac(hash_context c[2])
{
  /* Use 2 barrels to be conservative */
  unsigned char b;
  for ( b=0; b<2; ++b )
  {
    hash_initial( c+b );
    hash_process( c+1, &b, 1 ); /* uninitialised on first pass */
  }
}

void prng_set_mac( prng * p, FILE * f_inp, int barrel )
{
  /* barrel should be 1 or 2 */
  unsigned char b;
  hash_context c[2];
  for ( b=0; b<barrel; b+=1 )
  {
    hash_initial( c+b );
    if ( b==1 ) hash_process( c+1, &b, 1 );
  }
  hash_process_file( c, f_inp, barrel );
  for ( b=0; b<barrel; b+=1 )
  {
    hash_final( c, p->seed+1+HW*(b+1) );
  }
  p->count = 1 + (barrel+1)*HW;
}

void clearsign( prng * p, FILE * f_inp, FILE * f_out )
{
  hash_context c[2];

  prng_init_mac(c);
  fputs(begin_clearsign,f_out);
  hash_process_ascii( c, f_inp, f_out, 2, 1 );
  fputs(end_clearsign,f_out);
  hash_final( c, p->seed+1+HW );
  hash_final( c, p->seed+1+2*HW );
  p->count = 1 + 3*HW;
}

int position(FILE  * f_inp) /* scan ascii file for ### introducer */
{
  while(!feof(f_inp))
  {
      char buffer[1024];
      fgets(buffer, 1024, f_inp);
      if(!strncmp(buffer, begin_clearsign, 3)) break;
  }
  if(feof(f_inp))
  {
    fputs( err_clearsig_header_not_found, stderr );
    return 0;
  }
  return 1;
}

int readsign( prng * p, FILE * f_inp, FILE * f_out )
{
  hash_context c[2];
  prng_init_mac(c);

  if(!position(f_inp)) return 1;
  hash_process_ascii( c, f_inp, f_out, 2, 0 );
  hash_final( c, p->seed+1+HW );
  hash_final( c, p->seed+1+2*HW );
  p->count = 1 + 3*HW;

  return 0;
}

void prng_set_time( prng * p )
{
  p->seed[1+3*HW] = (word32) time(0);
  p->count = 2 + 3*HW;
}

word32 prng_next( prng * p )
{
  word32 tmp[HW];
  byte buffer[ ( 3*HW  + 2 ) * 4 ];
  unsigned i,j;
  hash_context c;

  p->seed[0] += 1;
  for ( i = 0; i < p->count; i+=1 )
  {
    for ( j = 0; j < 4; j += 1 )
    {
      buffer[ i*4 + j ] = (byte) ( p->seed[i] >> (j*8) );
    }
  }
  
  hash_initial( &c );
  hash_process( &c, buffer, p->count*4 );
  hash_final( &c, tmp );
  memset( buffer, 0, sizeof(buffer) );
  return tmp[0];
}

void prng_to_vlong( prng * p, vlPoint V )
{
  unsigned i;
  V[0] = 15; /* 240 bits */
  for (i=1;i<16;i+=1)
    V[i] = (unsigned short) prng_next( p );
}

void hash_to_vlong( word32 * mac, vlPoint V )
{
  unsigned i;
  V[0] = 15; /* 240 bits */
  for (i=0;i<8;i+=1)
  {
    word32 x = mac[i];
    V[i*2+1] = (word16) x;
    V[i*2+2] = (word16) (x>>16);
  }
}

void get_vlong( FILE *f, vlPoint v )
{
  unsigned u;
  vlPoint w;
  vlClear (v);
  w[0] = 1;
  while (1)
  {
    u = fgetc( f );
    if ( u >= '0' && u <= '9' )
      u -= '0';
    else if ( u >= 'a' && u <= 'z' )
      u -= 'a' - 10;
    else if ( u >= 'A' && u <= 'Z' )
      u -= 'A' - 10;
    else if ( u <= ' ' )
      continue;
    else
      break;
    vlShortLshift (v, 4);
    w[1] = (word16) u;
    vlAdd (v, w);
  }
}

void get_vlong_a( FILE *f, vlPoint v )
{
  unsigned i=0;
  char buffer[256], u;

  vlPoint w;
  vlClear (v);
  w[0] = 1;
  buffer[0]=0;
  fgets(buffer, 256, f);

  while ((u = buffer[i++]) != 0)
  {
    if ( u >= '0' && u <= '9' )
      u -= '0';
    else if ( u >= 'a' && u <= 'z' )
      u -= 'a' - 10;
    else if ( u >= 'A' && u <= 'Z' )
      u -= 'A' - 10;
    else if ( u <= ' ' )
      continue;
    else
      break;
    vlShortLshift (v, 4);
    w[1] = (word16) u;
    vlAdd (v, w);
  }
}

const char hex[16] = "0123456789abcdef";

void put_vlong( vlPoint v )
{
  unsigned i,j;
  for (i = v[0]; i > 0; i--) 
  {
    unsigned x = v[i];
    for (j=0;j<4;j+=1)
      putchar( hex[ (x >> (12-4*j)) % 16 ] );
  }
}

void put_binary_vlong (FILE *f, vlPoint v)
{
  unsigned n = NB;
  while (n--)
  {
    if (v[0] == 0) v[1] =  0;
    fputcPlus (v[1] & 0xff, f);
    vlShortRshift (v, 8);
  }
}

void get_binary_vlong(FILE *f, vlPoint v)
{
  byte u[NB];
  vlPoint w;
  unsigned n = NB;
  freadPlus(u, 1, NB, f);
  vlClear (v); w[0] = 1;
  while (n--)
  {
    vlShortLshift (v, 8);
    w[1] = u[n];
    vlAdd (v, w);
  }
}

#define BIG_BLOCK_SIZE 0x1000
typedef word32 big_buf[1+BIG_BLOCK_SIZE/4]; /* Use word32 to force alignment */
/* 1 extra word to cope with expansion */

void vlong_to_square_block( const vlPoint V, squareBlock key )
{
  vlPoint v;
  unsigned j;
  vlCopy (v, V);
  for (j = 0; j < BPB; j++)
  {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99国产精品99久久久久久| 精品一区二区在线视频| 久久人人97超碰com| 9191成人精品久久| 欧美猛男超大videosgay| 色婷婷狠狠综合| 一本久道久久综合中文字幕| 91在线无精精品入口| 99这里只有精品| www.日本不卡| 91高清视频免费看| 欧美午夜不卡在线观看免费| 欧美影院一区二区三区| 欧美性色欧美a在线播放| 欧美揉bbbbb揉bbbbb| 欧美精品少妇一区二区三区| 91精品国产免费久久综合| 欧美精品欧美精品系列| 精品欧美一区二区在线观看| 26uuu欧美| 中文字幕一区在线观看视频| 综合久久久久综合| 亚洲一区二区三区在线| 日韩精品一区第一页| 国内精品视频666| 91蜜桃在线观看| 五月天一区二区| 一片黄亚洲嫩模| 日韩精品一区第一页| 国内外精品视频| 成人午夜av在线| 欧美性大战久久久久久久| 8v天堂国产在线一区二区| 精品久久久久久久久久久久包黑料 | 亚洲三级电影网站| 亚洲成人资源在线| 国产一区二区三区在线看麻豆| 国产大陆亚洲精品国产| 欧美午夜免费电影| 国产亚洲欧美一级| 亚洲第一精品在线| 丁香婷婷深情五月亚洲| 欧美日韩国产精选| 欧美国产一区视频在线观看| 亚洲成年人网站在线观看| 国产福利一区二区三区视频在线 | 中文字幕一区二区三区在线播放 | 强制捆绑调教一区二区| 成人午夜激情在线| 日韩一卡二卡三卡国产欧美| 国产精品狼人久久影院观看方式| 天天影视涩香欲综合网 | 成人免费视频app| 欧美精品在欧美一区二区少妇| 国产欧美日韩精品a在线观看| 午夜电影一区二区三区| 成人av网站在线| 精品国产一区二区三区忘忧草| 亚洲夂夂婷婷色拍ww47| 成人av电影免费在线播放| 日韩精品最新网址| 日韩精品一二区| 972aa.com艺术欧美| 精品精品国产高清a毛片牛牛| 亚洲尤物在线视频观看| 95精品视频在线| 国产欧美日韩久久| 国产精品一区二区在线播放| 日韩欧美国产精品一区| 亚洲福利视频导航| 99国产麻豆精品| 中文字幕精品一区二区三区精品| 久草在线在线精品观看| 日韩免费高清av| 日本va欧美va欧美va精品| 欧美精品日韩一本| 日韩一区精品视频| 91麻豆精品国产| 日韩av电影免费观看高清完整版在线观看 | 亚洲精品国产精华液| 91麻豆国产自产在线观看| 国产精品国产自产拍高清av王其| 岛国一区二区三区| 国产精品国产自产拍高清av| youjizz久久| 亚洲欧美另类久久久精品2019| 99久久久久久| 一二三四社区欧美黄| 在线观看不卡视频| 日韩主播视频在线| 日韩三级.com| 国产精品18久久久久久久久久久久 | 国产精品精品国产色婷婷| 99久久er热在这里只有精品15 | 亚洲天堂网中文字| 在线精品观看国产| 日本不卡高清视频| 久久久99精品免费观看不卡| 国产成人精品免费| 亚洲精品免费视频| 91精品国产入口在线| 国产乱子伦一区二区三区国色天香| 久久综合狠狠综合| 9人人澡人人爽人人精品| 亚洲一级不卡视频| 欧美xxx久久| 91女神在线视频| 蜜臀va亚洲va欧美va天堂| 精品国产一区二区三区四区四 | 在线免费观看日韩欧美| 奇米色777欧美一区二区| 国产亚洲一区二区三区| 在线日韩国产精品| 国产一区中文字幕| 亚洲一区视频在线观看视频| 精品福利二区三区| 日本高清不卡一区| 国精品**一区二区三区在线蜜桃| 中文字幕av不卡| 欧美裸体bbwbbwbbw| 成人性生交大片免费看中文网站| 亚洲一区二区欧美激情| 国产女人18毛片水真多成人如厕| 欧美少妇bbb| 丰满少妇在线播放bd日韩电影| 免费高清不卡av| 中文字幕亚洲视频| 久久人人97超碰com| 在线电影欧美成精品| av不卡在线播放| 经典三级视频一区| 亚洲一区二区三区四区不卡| 中文字幕不卡三区| 日韩免费在线观看| 欧美视频自拍偷拍| 波多野结衣精品在线| 久久超碰97人人做人人爱| 一区二区三区欧美视频| 国产精品色婷婷久久58| 26uuu成人网一区二区三区| 欧美日韩一本到| 色av成人天堂桃色av| 国产1区2区3区精品美女| 免费观看成人鲁鲁鲁鲁鲁视频| 亚洲精品国产成人久久av盗摄| 久久综合九色综合欧美就去吻| 欧美巨大另类极品videosbest | 日韩 欧美一区二区三区| 一区二区三区91| 中文字幕在线不卡一区| 日本一二三四高清不卡| 国产色爱av资源综合区| 久久综合色一综合色88| 欧美大片在线观看一区二区| 欧美蜜桃一区二区三区| 欧美日韩精品二区第二页| 欧美性猛片xxxx免费看久爱 | 夜夜嗨av一区二区三区| 亚洲情趣在线观看| 亚洲视频你懂的| 亚洲人成在线观看一区二区| 国产精品理论在线观看| 中文字幕一区二区5566日韩| 国产精品传媒入口麻豆| 国产精品国产三级国产有无不卡| 欧美国产日本视频| 国产精品福利电影一区二区三区四区| 日本一区二区成人| 1000部国产精品成人观看| 亚洲乱码国产乱码精品精小说 | 亚洲一区二区三区小说| 午夜视频在线观看一区二区| 亚洲成av人综合在线观看| 免费av网站大全久久| 国产精品中文字幕日韩精品 | 欧美色涩在线第一页| 亚洲国产电影在线观看| 中文字幕一区av| 一区二区三区精品在线观看| 亚洲成人激情av| 免费成人在线观看| 成人一级黄色片| 欧美色综合网站| 337p日本欧洲亚洲大胆色噜噜| 欧美激情资源网| 亚洲综合色在线| 久久99国产精品久久99果冻传媒| 国产91色综合久久免费分享| 色婷婷综合久色| 日韩欧美电影一二三| 1000部国产精品成人观看| 日韩电影在线一区二区三区| 久88久久88久久久| 一本久久综合亚洲鲁鲁五月天| 欧美日本国产视频| 国产精品久久久久影院亚瑟| 亚洲成人三级小说| 成人一区在线观看| 91精品国产高清一区二区三区 | 国产精品久久久久影院亚瑟|