| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2357 人关注过本帖
标题:编写一个数据加密
只看楼主 加入收藏
小新11
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2019-5-20
结帖率:0
收藏
已结贴  问题点数:20 回复次数:4 
编写一个数据加密
编写一个数据加密,数据是小于8位的整数,为了确保安全,在传递过程中需要加密,加密规则如下:首先将数据倒序,然后将每位数字都加上5,再用和除以10的余数代替该数字,最后将第一位和最后一位数字交换。
搜索更多相关主题的帖子: 编写 一个数 加密 数据 位数 
2019-05-20 16:07
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9024
专家分:54030
注 册:2011-1-18
收藏
得分:7 
数据是小于8位的整数
也就是最大只有7位的整数?应该是十进制的整数吧?应该是非负整数吧?

将数据倒序
比如 1234,是倒序成 4321,还是 4321000 ?
如果是要求倒序成 4321 的话,那么 01234 是倒序成 43210,还是 4321 ?

最后将第一位和最后一位数字交换。
对于 1234,第一位是 1,还是 0 ?
对于 01234,第一位是 1,还是 0 ?



2019-05-20 16:17
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9024
专家分:54030
注 册:2011-1-18
收藏
得分:0 
程序代码:
#include <stdio.h>

unsigned foo( unsigned n )
{
    unsigned b0 = (n/1%10 + 5)%10;
    unsigned b1 = (n/10%10 + 5)%10;
    unsigned b2 = (n/100%10 + 5)%10;
    unsigned b3 = (n/1000%10 + 5)%10;
    unsigned b4 = (n/10000%10 + 5)%10;
    unsigned b5 = (n/100000%10 + 5)%10;
    unsigned b6 = (n/1000000%10 + 5)%10;
    return b0*1 + b5*10 + b4*100 + b3*1000 + b2*10000 + b1*100000 + b6*1000000;
}

void test( unsigned n )
{
    printf( "%7u --> %7u\n", n, foo(n) );
}

int main( void )
{
    test( 0 );
    test( 123 );
    test( 1234567 );
}

输出:
      0 --> 5555555
    123 --> 5765558
1234567 --> 6109872
2019-05-20 16:28
HUMMER军
Rank: 2
等 级:论坛游民
威 望:1
帖 子:7
专家分:19
注 册:2019-5-5
收藏
得分:7 
这个程序就分四个步骤,一步一步完成就是了。
程序代码:
/*
编写一个数据加密,数据是小于8位的整数,为了确保安全,在传递过程中需要加密,加密规则如下:
1.首先将数据倒序,
2.然后将每位数字都加上5,
3.再用和除以10的余数代替该数字,
4.最后将第一位和最后一位数字交换。
*/
#include<stdio.h>
int digit(long long p);//判断位数

int main()
{
  long long p;//p用于存储密码
  int n;//n用于存储所输入密码的位数

  printf("请输入密码:");
  scanf("%lld",&p);

  n=digit(p);
  int arr[n];

  for(int i=0;i<n;i++)
  {
    arr[i]=(p%10+5)%10;//步骤1 2 3可以用这一个式子解决
    p/=10;
  }

  int temp;
  temp=arr[0];
  arr[0]=arr[n-1];
  arr[n-1]=temp;//至此完成第四个步骤,交换首末位的值

  for(int i=0;i<n;i++)
  {
    printf("加密后的密码是:%d",arr[i]);//输出加密后的密码
  }
  printf("\n");
  return 0;
}

int digit(long long p)
{
  int count=0;
  long long temp;
  temp=p;

  while(temp!=0)
  {
    count++;
    temp/=10;
  }
  return count;
}

no code you say j8
no pics you say egg
2019-05-20 21:34
lxk1732942
Rank: 6Rank: 6
等 级:侠之大者
威 望:7
帖 子:450
专家分:425
注 册:2018-9-4
收藏
得分:7 
我有个问题,
5-->?
55-->?
555-->?
……
5555555-->?
2019-05-21 08:40
快速回复:编写一个数据加密
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017747 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved